From cefb2d5598d67ac18d1d1d08f61cc8bc7e0e9bb1 Mon Sep 17 00:00:00 2001 From: Jougan-0 Date: Sat, 31 Aug 2024 00:48:54 +0000 Subject: [PATCH] New Models generated and updated Signed-off-by: l5io --- .../0.5.0/v1.0.0/components/SubNamespace.json | 133 +++++++++++- .../v1.0.0/components/SubNamespace.json | 133 +++++++++++- .../v1.0.0/components/AdoptedResource.json | 193 +++++++++++++++++ .../v1.0.14/v1.0.0/components/Archive.json | 193 +++++++++++++++++ .../v1.0.14/v1.0.0/components/Endpoint.json | 193 +++++++++++++++++ .../v1.0.14/v1.0.0/components/EventBus.json | 193 +++++++++++++++++ .../v1.0.0/components/FieldExport.json | 193 +++++++++++++++++ .../v1.0.14/v1.0.0/components/Rule.json | 193 +++++++++++++++++ .../v1.0.14/v1.0.0/model.json | 41 ++++ .../v1.0.0/components/AdoptedResource.json | 193 +++++++++++++++++ .../v1.0.0/components/FieldExport.json | 193 +++++++++++++++++ .../v1.3.12/v1.0.0/components/Group.json | 193 +++++++++++++++++ .../v1.0.0/components/InstanceProfile.json | 193 +++++++++++++++++ .../components/OpenIDConnectProvider.json | 193 +++++++++++++++++ .../v1.3.12/v1.0.0/components/Policy.json | 193 +++++++++++++++++ .../v1.3.12/v1.0.0/components/Role.json | 193 +++++++++++++++++ .../v1.3.12/v1.0.0/components/User.json | 193 +++++++++++++++++ .../v1.3.12/v1.0.0/model.json | 41 ++++ .../v1.0.5/v1.0.0/components/ACL.json | 193 +++++++++++++++++ .../v1.0.0/components/AdoptedResource.json | 193 +++++++++++++++++ .../v1.0.5/v1.0.0/components/Cluster.json | 193 +++++++++++++++++ .../v1.0.5/v1.0.0/components/FieldExport.json | 193 +++++++++++++++++ .../v1.0.0/components/ParameterGroup.json | 193 +++++++++++++++++ .../v1.0.5/v1.0.0/components/Snapshot.json | 193 +++++++++++++++++ .../v1.0.5/v1.0.0/components/SubnetGroup.json | 193 +++++++++++++++++ .../v1.0.5/v1.0.0/components/User.json | 193 +++++++++++++++++ .../v1.0.5/v1.0.0/model.json | 41 ++++ .../v1.0.0/components/AdoptedResource.json | 193 +++++++++++++++++ .../v0.0.36/v1.0.0/components/Broker.json | 193 +++++++++++++++++ .../v1.0.0/components/FieldExport.json | 193 +++++++++++++++++ .../v0.0.36/v1.0.0/model.json | 41 ++++ .../v1.0.14/v1.0.0/components/Activity.json | 193 +++++++++++++++++ .../v1.0.0/components/AdoptedResource.json | 193 +++++++++++++++++ .../v1.0.0/components/FieldExport.json | 193 +++++++++++++++++ .../v1.0.0/components/StateMachine.json | 193 +++++++++++++++++ .../v1.0.14/v1.0.0/model.json | 41 ++++ .../components/CassandraDatacenter.json | 195 ++++++++++++++++++ .../v1.0.0/components/CassandraTask.json | 195 ++++++++++++++++++ .../cass-operator/0.53.3/v1.0.0/model.json | 42 ++++ .../0.1.2/v1.0.0/components/DatadogAgent.json | 8 +- .../v1.0.0/components/DatadogMetric.json | 8 +- .../v1.0.0/components/DatadogAgent.json | 8 +- .../v1.0.0/components/DatadogMetric.json | 8 +- .../v1.0.0/components/DatadogAgent.json | 8 +- .../v1.0.0/components/DatadogMetric.json | 8 +- .../v1.0.0/components/DatadogAgent.json | 8 +- .../v1.0.0/components/DatadogMetric.json | 8 +- .../v1.0.0/components/DatadogAgent.json | 8 +- .../v1.0.0/components/DatadogMetric.json | 8 +- .../3.6.2/v1.0.0/components/Alertmanager.json | 195 ++++++++++++++++++ .../v1.0.0/components/AlertmanagerConfig.json | 195 ++++++++++++++++++ .../3.6.2/v1.0.0/components/GrafanaAgent.json | 195 ++++++++++++++++++ .../3.6.2/v1.0.0/components/Integration.json | 195 ++++++++++++++++++ .../3.6.2/v1.0.0/components/LogsInstance.json | 195 ++++++++++++++++++ .../v1.0.0/components/MetricsInstance.json | 195 ++++++++++++++++++ .../3.6.2/v1.0.0/components/PodLogs.json | 195 ++++++++++++++++++ .../3.6.2/v1.0.0/components/PodMonitor.json | 195 ++++++++++++++++++ .../3.6.2/v1.0.0/components/Probe.json | 195 ++++++++++++++++++ .../3.6.2/v1.0.0/components/Prometheus.json | 195 ++++++++++++++++++ .../v1.0.0/components/PrometheusAgent.json | 195 ++++++++++++++++++ .../v1.0.0/components/PrometheusRule.json | 195 ++++++++++++++++++ .../3.6.2/v1.0.0/components/ScrapeConfig.json | 195 ++++++++++++++++++ .../v1.0.0/components/ServiceMonitor.json | 195 ++++++++++++++++++ .../3.6.2/v1.0.0/components/ThanosRuler.json | 195 ++++++++++++++++++ .../3.6.2/v1.0.0/model.json | 42 ++++ .../7.91.0/v1.0.0/components/CheCluster.json | 195 ++++++++++++++++++ .../eclipse-che/7.91.0/v1.0.0/model.json | 42 ++++ .../v1.0.0/components/AuthConfig.json | 195 ++++++++++++++++++ .../v1.0.0/components/Gateway.json | 195 ++++++++++++++++++ .../v1.0.0/components/GatewayParameters.json | 195 ++++++++++++++++++ .../v1.0.0/components/GraphQLApi.json | 195 ++++++++++++++++++ .../v1.0.0/components/HttpListenerOption.json | 195 ++++++++++++++++++ .../v1.0.0/components/ListenerOption.json | 195 ++++++++++++++++++ .../components/MatchableHttpGateway.json | 195 ++++++++++++++++++ .../components/MatchableTcpGateway.json | 195 ++++++++++++++++++ .../v1.0.0/components/Proxy.json | 195 ++++++++++++++++++ .../v1.0.0/components/RateLimitConfig.json | 195 ++++++++++++++++++ .../v1.0.0/components/RouteOption.json | 195 ++++++++++++++++++ .../v1.0.0/components/RouteTable.json | 195 ++++++++++++++++++ .../v1.0.0/components/Settings.json | 195 ++++++++++++++++++ .../v1.0.0/components/Upstream.json | 195 ++++++++++++++++++ .../v1.0.0/components/UpstreamGroup.json | 195 ++++++++++++++++++ .../v1.0.0/components/VirtualHostOption.json | 195 ++++++++++++++++++ .../v1.0.0/components/VirtualService.json | 195 ++++++++++++++++++ .../gloo/1.18.0-beta18/v1.0.0/model.json | 42 ++++ .../components/CassandraDatacenter.json | 195 ++++++++++++++++++ .../v1.0.0/components/CassandraTask.json | 195 ++++++++++++++++++ .../v1.0.0/components/ClientConfig.json | 195 ++++++++++++++++++ .../v1.0.0/components/K8ssandraCluster.json | 195 ++++++++++++++++++ .../v1.0.0/components/K8ssandraTask.json | 195 ++++++++++++++++++ .../v1.0.0/components/MedusaBackup.json | 195 ++++++++++++++++++ .../v1.0.0/components/MedusaBackupJob.json | 195 ++++++++++++++++++ .../components/MedusaBackupSchedule.json | 195 ++++++++++++++++++ .../components/MedusaConfiguration.json | 193 +++++++++++++++++ .../v1.0.0/components/MedusaRestoreJob.json | 195 ++++++++++++++++++ .../v1.0.0/components/MedusaTask.json | 195 ++++++++++++++++++ .../v1.0.0/components/Reaper.json | 195 ++++++++++++++++++ .../v1.0.0/components/ReplicatedSecret.json | 195 ++++++++++++++++++ .../v1.0.0/components/Stargate.json | 195 ++++++++++++++++++ .../v1.0.0/model.json | 42 ++++ .../components/CassandraDatacenter.json | 193 +++++++++++++++++ .../v1.0.0/components/CassandraTask.json | 193 +++++++++++++++++ .../v1.0.0/components/ClientConfig.json | 193 +++++++++++++++++ .../v1.0.0/components/K8ssandraCluster.json | 193 +++++++++++++++++ .../v1.0.0/components/K8ssandraTask.json | 193 +++++++++++++++++ .../v1.0.0/components/MedusaBackup.json | 193 +++++++++++++++++ .../v1.0.0/components/MedusaBackupJob.json | 193 +++++++++++++++++ .../components/MedusaBackupSchedule.json | 193 +++++++++++++++++ .../components/MedusaConfiguration.json | 193 +++++++++++++++++ .../v1.0.0/components/MedusaRestoreJob.json | 193 +++++++++++++++++ .../v1.0.0/components/MedusaTask.json | 193 +++++++++++++++++ .../v1.0.0/components/Reaper.json | 193 +++++++++++++++++ .../v1.0.0/components/ReplicatedSecret.json | 193 +++++++++++++++++ .../v1.0.0/components/Stargate.json | 193 +++++++++++++++++ .../v1.0.0/model.json | 42 ++++ .../components/CrunchyBridgeCluster.json | 195 ++++++++++++++++++ .../2.4.2/v1.0.0/components/PGAdmin.json | 195 ++++++++++++++++++ .../2.4.2/v1.0.0/components/PGUpgrade.json | 195 ++++++++++++++++++ .../v1.0.0/components/PerconaPGBackup.json | 195 ++++++++++++++++++ .../v1.0.0/components/PerconaPGCluster.json | 195 ++++++++++++++++++ .../v1.0.0/components/PerconaPGRestore.json | 195 ++++++++++++++++++ .../v1.0.0/components/PerconaPGUpgrade.json | 195 ++++++++++++++++++ .../v1.0.0/components/PostgresCluster.json | 195 ++++++++++++++++++ .../pg-operator/2.4.2/v1.0.0/model.json | 42 ++++ .../v1.0.0/components/PerconaServerMySQL.json | 6 +- .../components/PerconaServerMySQLBackup.json | 6 +- .../components/PerconaServerMySQLRestore.json | 6 +- .../2.20.0-test.13/v1.0.0/model.json | 42 ++++ .../triggers/15.5.27/v1.0.0/model.json | 42 ++++ .../0.25.8/v1.0.0/components/VLogs.json | 195 ++++++++++++++++++ .../0.25.8/v1.0.0/components/VMAgent.json | 195 ++++++++++++++++++ .../0.25.8/v1.0.0/components/VMAlert.json | 195 ++++++++++++++++++ .../v1.0.0/components/VMAlertmanager.json | 195 ++++++++++++++++++ .../components/VMAlertmanagerConfig.json | 195 ++++++++++++++++++ .../0.25.8/v1.0.0/components/VMAuth.json | 195 ++++++++++++++++++ .../0.25.8/v1.0.0/components/VMCluster.json | 195 ++++++++++++++++++ .../v1.0.0/components/VMNodeScrape.json | 195 ++++++++++++++++++ .../0.25.8/v1.0.0/components/VMPodScrape.json | 195 ++++++++++++++++++ .../0.25.8/v1.0.0/components/VMProbe.json | 195 ++++++++++++++++++ .../0.25.8/v1.0.0/components/VMRule.json | 195 ++++++++++++++++++ .../v1.0.0/components/VMScrapeConfig.json | 195 ++++++++++++++++++ .../v1.0.0/components/VMServiceScrape.json | 195 ++++++++++++++++++ .../0.25.8/v1.0.0/components/VMSingle.json | 195 ++++++++++++++++++ .../v1.0.0/components/VMStaticScrape.json | 195 ++++++++++++++++++ .../0.25.8/v1.0.0/components/VMUser.json | 195 ++++++++++++++++++ .../0.25.8/v1.0.0/model.json | 42 ++++ .../2024.8.30/v1.0.0/components/Ingress.json | 195 ++++++++++++++++++ .../components/MetricsConfiguration.json | 195 ++++++++++++++++++ .../voyager-crds/2024.8.30/v1.0.0/model.json | 42 ++++ 149 files changed, 23894 insertions(+), 59 deletions(-) create mode 100644 server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/AdoptedResource.json create mode 100644 server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/Archive.json create mode 100644 server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/Endpoint.json create mode 100644 server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/EventBus.json create mode 100644 server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/FieldExport.json create mode 100644 server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/Rule.json create mode 100644 server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/model.json create mode 100644 server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/AdoptedResource.json create mode 100644 server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/FieldExport.json create mode 100644 server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/Group.json create mode 100644 server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/InstanceProfile.json create mode 100644 server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/OpenIDConnectProvider.json create mode 100644 server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/Policy.json create mode 100644 server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/Role.json create mode 100644 server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/User.json create mode 100644 server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/model.json create mode 100644 server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/ACL.json create mode 100644 server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/AdoptedResource.json create mode 100644 server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/Cluster.json create mode 100644 server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/FieldExport.json create mode 100644 server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/ParameterGroup.json create mode 100644 server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/Snapshot.json create mode 100644 server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/SubnetGroup.json create mode 100644 server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/User.json create mode 100644 server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/model.json create mode 100644 server/meshmodel/aws-mq-controller/v0.0.36/v1.0.0/components/AdoptedResource.json create mode 100644 server/meshmodel/aws-mq-controller/v0.0.36/v1.0.0/components/Broker.json create mode 100644 server/meshmodel/aws-mq-controller/v0.0.36/v1.0.0/components/FieldExport.json create mode 100644 server/meshmodel/aws-mq-controller/v0.0.36/v1.0.0/model.json create mode 100644 server/meshmodel/aws-sfn-controller/v1.0.14/v1.0.0/components/Activity.json create mode 100644 server/meshmodel/aws-sfn-controller/v1.0.14/v1.0.0/components/AdoptedResource.json create mode 100644 server/meshmodel/aws-sfn-controller/v1.0.14/v1.0.0/components/FieldExport.json create mode 100644 server/meshmodel/aws-sfn-controller/v1.0.14/v1.0.0/components/StateMachine.json create mode 100644 server/meshmodel/aws-sfn-controller/v1.0.14/v1.0.0/model.json create mode 100644 server/meshmodel/cass-operator/0.53.3/v1.0.0/components/CassandraDatacenter.json create mode 100644 server/meshmodel/cass-operator/0.53.3/v1.0.0/components/CassandraTask.json create mode 100644 server/meshmodel/cass-operator/0.53.3/v1.0.0/model.json create mode 100644 server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/Alertmanager.json create mode 100644 server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/AlertmanagerConfig.json create mode 100644 server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/GrafanaAgent.json create mode 100644 server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/Integration.json create mode 100644 server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/LogsInstance.json create mode 100644 server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/MetricsInstance.json create mode 100644 server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/PodLogs.json create mode 100644 server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/PodMonitor.json create mode 100644 server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/Probe.json create mode 100644 server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/Prometheus.json create mode 100644 server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/PrometheusAgent.json create mode 100644 server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/PrometheusRule.json create mode 100644 server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/ScrapeConfig.json create mode 100644 server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/ServiceMonitor.json create mode 100644 server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/ThanosRuler.json create mode 100644 server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/model.json create mode 100644 server/meshmodel/eclipse-che/7.91.0/v1.0.0/components/CheCluster.json create mode 100644 server/meshmodel/eclipse-che/7.91.0/v1.0.0/model.json create mode 100644 server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/AuthConfig.json create mode 100644 server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/Gateway.json create mode 100644 server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/GatewayParameters.json create mode 100644 server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/GraphQLApi.json create mode 100644 server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/HttpListenerOption.json create mode 100644 server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/ListenerOption.json create mode 100644 server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/MatchableHttpGateway.json create mode 100644 server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/MatchableTcpGateway.json create mode 100644 server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/Proxy.json create mode 100644 server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/RateLimitConfig.json create mode 100644 server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/RouteOption.json create mode 100644 server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/RouteTable.json create mode 100644 server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/Settings.json create mode 100644 server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/Upstream.json create mode 100644 server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/UpstreamGroup.json create mode 100644 server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/VirtualHostOption.json create mode 100644 server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/VirtualService.json create mode 100644 server/meshmodel/gloo/1.18.0-beta18/v1.0.0/model.json create mode 100644 server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/CassandraDatacenter.json create mode 100644 server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/CassandraTask.json create mode 100644 server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/ClientConfig.json create mode 100644 server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/K8ssandraCluster.json create mode 100644 server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/K8ssandraTask.json create mode 100644 server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackup.json create mode 100644 server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackupJob.json create mode 100644 server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackupSchedule.json create mode 100644 server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaConfiguration.json create mode 100644 server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaRestoreJob.json create mode 100644 server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaTask.json create mode 100644 server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/Reaper.json create mode 100644 server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/ReplicatedSecret.json create mode 100644 server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/Stargate.json create mode 100644 server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/model.json create mode 100644 server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/CassandraDatacenter.json create mode 100644 server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/CassandraTask.json create mode 100644 server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/ClientConfig.json create mode 100644 server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/K8ssandraCluster.json create mode 100644 server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/K8ssandraTask.json create mode 100644 server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackup.json create mode 100644 server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackupJob.json create mode 100644 server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackupSchedule.json create mode 100644 server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaConfiguration.json create mode 100644 server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaRestoreJob.json create mode 100644 server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaTask.json create mode 100644 server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/Reaper.json create mode 100644 server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/ReplicatedSecret.json create mode 100644 server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/Stargate.json create mode 100644 server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/model.json create mode 100644 server/meshmodel/pg-operator/2.4.2/v1.0.0/components/CrunchyBridgeCluster.json create mode 100644 server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PGAdmin.json create mode 100644 server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PGUpgrade.json create mode 100644 server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PerconaPGBackup.json create mode 100644 server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PerconaPGCluster.json create mode 100644 server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PerconaPGRestore.json create mode 100644 server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PerconaPGUpgrade.json create mode 100644 server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PostgresCluster.json create mode 100644 server/meshmodel/pg-operator/2.4.2/v1.0.0/model.json create mode 100644 server/meshmodel/telepresence/2.20.0-test.13/v1.0.0/model.json create mode 100644 server/meshmodel/triggers/15.5.27/v1.0.0/model.json create mode 100644 server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VLogs.json create mode 100644 server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMAgent.json create mode 100644 server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMAlert.json create mode 100644 server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMAlertmanager.json create mode 100644 server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMAlertmanagerConfig.json create mode 100644 server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMAuth.json create mode 100644 server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMCluster.json create mode 100644 server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMNodeScrape.json create mode 100644 server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMPodScrape.json create mode 100644 server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMProbe.json create mode 100644 server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMRule.json create mode 100644 server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMScrapeConfig.json create mode 100644 server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMServiceScrape.json create mode 100644 server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMSingle.json create mode 100644 server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMStaticScrape.json create mode 100644 server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMUser.json create mode 100644 server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/model.json create mode 100644 server/meshmodel/voyager-crds/2024.8.30/v1.0.0/components/Ingress.json create mode 100644 server/meshmodel/voyager-crds/2024.8.30/v1.0.0/components/MetricsConfiguration.json create mode 100644 server/meshmodel/voyager-crds/2024.8.30/v1.0.0/model.json diff --git a/server/meshmodel/accurate/0.5.0/v1.0.0/components/SubNamespace.json b/server/meshmodel/accurate/0.5.0/v1.0.0/components/SubNamespace.json index 1b901f46f5c..454c2e116c5 100644 --- a/server/meshmodel/accurate/0.5.0/v1.0.0/components/SubNamespace.json +++ b/server/meshmodel/accurate/0.5.0/v1.0.0/components/SubNamespace.json @@ -1,5 +1,128 @@ { - "capabilities": null, + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], "component": { "kind": "SubNamespace", "schema": "{\n \"description\": \"SubNamespace is the Schema for the subnamespaces API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"Spec is the spec of SubNamespace.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations are the annotations to be propagated to the sub-namespace.\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels are the labels to be propagated to the sub-namespace\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Sub Namespace\",\n \"type\": \"object\"\n}", @@ -54,11 +177,11 @@ "schemaVersion": "components.meshery.io/v1beta1", "status": "ignored", "styles": { - "primaryColor": "#EF3F24", - "secondaryColor": "#00D3A9", + "primaryColor": "#14191f", + "secondaryColor": "#14191f", "shape": "circle", - "svgColor": "\u003csvg width=\"128\" height=\"95\" viewBox=\"0 0 128 95\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cpath d=\"M36.2311 77.6447L59.8431 63.0347C60.0219 62.9266 60.2266 62.8684 60.4356 62.8663C60.6446 62.8642 60.8503 62.9182 61.0313 63.0227C61.2123 63.1272 61.362 63.2784 61.4647 63.4604C61.5673 63.6425 61.6194 63.8487 61.6152 64.0577V93.2627C61.6195 93.4717 61.5676 93.678 61.4649 93.8601C61.3622 94.0422 61.2125 94.1934 61.0314 94.2978C60.8503 94.4023 60.6445 94.4561 60.4355 94.4538C60.2264 94.4515 60.0218 94.3931 59.8431 94.2847L36.2311 79.6847C36.0587 79.5758 35.9165 79.425 35.8181 79.2464C35.7196 79.0678 35.668 78.8671 35.668 78.6632C35.668 78.4592 35.7196 78.2586 35.8181 78.08C35.9165 77.9013 36.0587 77.7506 36.2311 77.6417\" fill=\"#EF3F24\"/\u003e\n\u003cpath d=\"M27.1402 74.0427L0.74019 57.7157C0.512617 57.5742 0.325121 57.3767 0.195573 57.1421C0.0660251 56.9075 -0.00124145 56.6437 0.000199362 56.3757V23.2757C-0.00360272 23.073 0.0470401 22.8729 0.146806 22.6964C0.246572 22.5199 0.391825 22.3734 0.56746 22.2721C0.743095 22.1708 0.942659 22.1184 1.1454 22.1205C1.34814 22.1225 1.54667 22.1789 1.72023 22.2837L28.1043 38.6097C28.3325 38.7514 28.521 38.9488 28.652 39.1834C28.783 39.418 28.8522 39.682 28.8532 39.9507V73.0507C28.857 73.2534 28.8064 73.4534 28.7067 73.6299C28.6069 73.8064 28.4615 73.953 28.2859 74.0543C28.1103 74.1556 27.9108 74.2079 27.708 74.2059C27.5053 74.2039 27.3068 74.1475 27.1332 74.0427\" fill=\"#EF3F24\"/\u003e\n\u003cpath d=\"M30.031 35.1247L3.43097 18.6677C3.26343 18.5622 3.12541 18.416 3.02972 18.2427C2.93403 18.0694 2.88379 17.8747 2.88379 17.6767C2.88379 17.4787 2.93403 17.284 3.02972 17.1107C3.12541 16.9374 3.26343 16.7912 3.43097 16.6857L29.9869 0.227692C30.2252 0.0788925 30.5006 0 30.7815 0C31.0624 0 31.3376 0.0788925 31.5759 0.227692L58.163 16.6857C58.3303 16.7915 58.4681 16.9378 58.5636 17.1112C58.6591 17.2846 58.7092 17.4793 58.7092 17.6772C58.7092 17.8751 58.6591 18.0698 58.5636 18.2432C58.4681 18.4166 58.3303 18.5629 58.163 18.6687L31.62 35.1247C31.3818 35.2733 31.1067 35.3521 30.8259 35.3521C30.5452 35.3521 30.2692 35.2733 30.031 35.1247Z\" fill=\"#EF3F24\"/\u003e\n\u003cpath d=\"M58.2888 59.3217L34.5409 74.0107C34.3621 74.1188 34.1575 74.1769 33.9486 74.1791C33.7397 74.1812 33.534 74.1273 33.3531 74.0229C33.1721 73.9185 33.0225 73.7675 32.9197 73.5856C32.8169 73.4037 32.7648 73.1976 32.7688 72.9887V43.6127C32.7643 43.4036 32.8161 43.1972 32.9187 43.0149C33.0213 42.8327 33.171 42.6814 33.3521 42.5768C33.5332 42.4723 33.7391 42.4183 33.9482 42.4205C34.1573 42.4228 34.3621 42.4812 34.5409 42.5897L58.2888 57.2777C58.4613 57.3866 58.6034 57.5374 58.7019 57.716C58.8003 57.8946 58.852 58.0952 58.852 58.2992C58.852 58.5032 58.8003 58.7038 58.7019 58.8824C58.6034 59.061 58.4613 59.2118 58.2888 59.3207\" fill=\"#EF3F24\"/\u003e\n\u003cpath d=\"M59.8433 53.5507L36.2293 38.9697C36.0571 38.8607 35.9152 38.7098 35.8169 38.5312C35.7186 38.3526 35.667 38.1521 35.667 37.9482C35.667 37.7443 35.7186 37.5438 35.8169 37.3652C35.9152 37.1866 36.0571 37.0358 36.2293 36.9267L59.8433 22.3057C60.0221 22.1975 60.2267 22.1392 60.4357 22.1369C60.6447 22.1346 60.8505 22.1884 61.0316 22.2927C61.2128 22.3969 61.3627 22.5479 61.4657 22.7297C61.5687 22.9116 61.621 23.1177 61.6173 23.3267V52.5267C61.6214 52.7358 61.5692 52.9421 61.4663 53.1242C61.3634 53.3062 61.2134 53.4573 61.0321 53.5617C60.8508 53.666 60.6449 53.7197 60.4358 53.7173C60.2267 53.7148 60.022 53.6563 59.8433 53.5477\" fill=\"#EF3F24\"/\u003e\n\u003cpath d=\"M90.8881 77.6447L67.2781 63.0347C67.0993 62.9265 66.8947 62.8683 66.6857 62.8661C66.4767 62.864 66.2711 62.918 66.0901 63.0226C65.9092 63.1271 65.7596 63.2783 65.657 63.4604C65.5545 63.6424 65.5027 63.8487 65.5071 64.0577V93.2627C65.5026 93.4717 65.5542 93.678 65.6568 93.8602C65.7593 94.0423 65.909 94.1935 66.09 94.298C66.271 94.4025 66.4768 94.4564 66.6858 94.454C66.8948 94.4517 67.0995 94.3932 67.2781 94.2847L90.886 79.6847C91.0587 79.576 91.2011 79.4253 91.2997 79.2466C91.3984 79.068 91.4501 78.8672 91.4501 78.6632C91.4501 78.4591 91.3984 78.2584 91.2997 78.0797C91.2011 77.9011 91.0587 77.7504 90.886 77.6417\" fill=\"#EF3F24\"/\u003e\n\u003cpath d=\"M99.979 74.0427L126.379 57.7157C126.606 57.5735 126.793 57.3758 126.922 57.1414C127.052 56.907 127.119 56.6435 127.119 56.3757V23.2757C127.123 23.0728 127.072 22.8726 126.972 22.696C126.873 22.5193 126.727 22.3727 126.552 22.2713C126.376 22.17 126.176 22.1177 125.973 22.1199C125.77 22.122 125.572 22.1786 125.398 22.2837L99.009 38.6117C98.7807 38.7534 98.5923 38.9508 98.4613 39.1854C98.3302 39.42 98.2609 39.684 98.26 39.9527V73.0527C98.2562 73.2554 98.3068 73.4555 98.4066 73.632C98.5063 73.8085 98.6516 73.955 98.8272 74.0563C99.0029 74.1576 99.2025 74.2099 99.4052 74.2079C99.608 74.2059 99.8065 74.1495 99.9801 74.0447\" fill=\"#EF3F24\"/\u003e\n\u003cpath d=\"M97.0924 35.1247L123.692 18.6677C123.86 18.5622 123.998 18.416 124.094 18.2427C124.189 18.0694 124.24 17.8747 124.24 17.6767C124.24 17.4787 124.189 17.284 124.094 17.1107C123.998 16.9374 123.86 16.7912 123.692 16.6857L97.1364 0.227692C96.8981 0.0788925 96.6227 0 96.3418 0C96.0609 0 95.7856 0.0788925 95.5474 0.227692L68.9594 16.6857C68.7923 16.7916 68.6547 16.9381 68.5593 17.1114C68.464 17.2848 68.4141 17.4794 68.4141 17.6772C68.4141 17.875 68.464 18.0696 68.5593 18.243C68.6547 18.4163 68.7923 18.5628 68.9594 18.6687L95.5023 35.1247C95.7406 35.2735 96.0159 35.3524 96.2969 35.3524C96.5778 35.3524 96.853 35.2735 97.0913 35.1247\" fill=\"#EF3F24\"/\u003e\n\u003cpath d=\"M68.8291 59.3217L92.576 74.0107C92.7548 74.1188 92.9593 74.1769 93.1682 74.1791C93.3771 74.1812 93.5828 74.1273 93.7638 74.0229C93.9448 73.9185 94.0945 73.7675 94.1973 73.5856C94.3 73.4037 94.352 73.1976 94.348 72.9887V43.6127C94.3525 43.4036 94.3008 43.1972 94.1982 43.0149C94.0956 42.8327 93.9459 42.6814 93.7648 42.5768C93.5836 42.4723 93.3778 42.4183 93.1687 42.4205C92.9596 42.4228 92.7549 42.4812 92.576 42.5897L68.8291 57.2777C68.6571 57.3869 68.5154 57.5378 68.4172 57.7164C68.3191 57.895 68.2676 58.0954 68.2676 58.2992C68.2676 58.503 68.3191 58.7035 68.4172 58.882C68.5154 59.0606 68.6571 59.2115 68.8291 59.3207\" fill=\"#EF3F24\"/\u003e\n\u003cpath d=\"M67.2771 53.5507L90.8911 38.9697C91.0631 38.8605 91.2048 38.7096 91.303 38.531C91.4011 38.3524 91.4526 38.152 91.4526 37.9482C91.4526 37.7444 91.4011 37.544 91.303 37.3654C91.2048 37.1868 91.0631 37.0359 90.8911 36.9267L67.2771 22.3057C67.0985 22.1976 66.8941 22.1394 66.6853 22.1372C66.4765 22.1349 66.271 22.1888 66.0901 22.2931C65.9092 22.3974 65.7596 22.5483 65.6569 22.7301C65.5542 22.9119 65.5021 23.1179 65.5061 23.3267V52.5267C65.5017 52.7356 65.5536 52.9418 65.6563 53.1238C65.7589 53.3058 65.9086 53.4569 66.0896 53.5613C66.2706 53.6656 66.4763 53.7194 66.6852 53.717C66.8941 53.7146 67.0985 53.6562 67.2771 53.5477\" fill=\"#EF3F24\"/\u003e\n\u003c/svg\u003e\n", - "svgWhite": "\u003csvg width=\"128\" height=\"95\" viewBox=\"0 0 128 95\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cpath d=\"M36.2311 77.6447L59.8431 63.0347C60.0219 62.9266 60.2266 62.8684 60.4356 62.8663C60.6446 62.8642 60.8503 62.9182 61.0313 63.0227C61.2123 63.1272 61.362 63.2784 61.4647 63.4604C61.5673 63.6425 61.6194 63.8487 61.6152 64.0577V93.2627C61.6195 93.4717 61.5676 93.678 61.4649 93.8601C61.3622 94.0422 61.2125 94.1934 61.0314 94.2978C60.8503 94.4023 60.6445 94.4561 60.4355 94.4538C60.2264 94.4515 60.0218 94.3931 59.8431 94.2847L36.2311 79.6847C36.0587 79.5758 35.9165 79.425 35.8181 79.2464C35.7196 79.0678 35.668 78.8671 35.668 78.6632C35.668 78.4592 35.7196 78.2586 35.8181 78.08C35.9165 77.9013 36.0587 77.7506 36.2311 77.6417\" fill=\"white\"/\u003e\n\u003cpath d=\"M27.1402 74.0427L0.74019 57.7157C0.512617 57.5742 0.325121 57.3767 0.195573 57.1421C0.0660251 56.9075 -0.00124145 56.6437 0.000199362 56.3757V23.2757C-0.00360272 23.073 0.0470401 22.8729 0.146806 22.6964C0.246572 22.5199 0.391825 22.3734 0.56746 22.2721C0.743095 22.1708 0.942659 22.1184 1.1454 22.1205C1.34814 22.1225 1.54667 22.1789 1.72023 22.2837L28.1043 38.6097C28.3325 38.7514 28.521 38.9488 28.652 39.1834C28.783 39.418 28.8522 39.682 28.8532 39.9507V73.0507C28.857 73.2534 28.8064 73.4534 28.7067 73.6299C28.6069 73.8064 28.4615 73.953 28.2859 74.0543C28.1103 74.1556 27.9108 74.2079 27.708 74.2059C27.5053 74.2039 27.3068 74.1475 27.1332 74.0427\" fill=\"white\"/\u003e\n\u003cpath d=\"M30.031 35.1247L3.43097 18.6677C3.26343 18.5622 3.12541 18.416 3.02972 18.2427C2.93403 18.0694 2.88379 17.8747 2.88379 17.6767C2.88379 17.4787 2.93403 17.284 3.02972 17.1107C3.12541 16.9374 3.26343 16.7912 3.43097 16.6857L29.9869 0.227692C30.2252 0.0788925 30.5006 0 30.7815 0C31.0624 0 31.3376 0.0788925 31.5759 0.227692L58.163 16.6857C58.3303 16.7915 58.4681 16.9378 58.5636 17.1112C58.6591 17.2846 58.7092 17.4793 58.7092 17.6772C58.7092 17.8751 58.6591 18.0698 58.5636 18.2432C58.4681 18.4166 58.3303 18.5629 58.163 18.6687L31.62 35.1247C31.3818 35.2733 31.1067 35.3521 30.8259 35.3521C30.5452 35.3521 30.2692 35.2733 30.031 35.1247Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M58.2888 59.3217L34.5409 74.0107C34.3621 74.1188 34.1575 74.1769 33.9486 74.1791C33.7397 74.1812 33.534 74.1273 33.3531 74.0229C33.1721 73.9185 33.0225 73.7675 32.9197 73.5856C32.8169 73.4037 32.7648 73.1976 32.7688 72.9887V43.6127C32.7643 43.4036 32.8161 43.1972 32.9187 43.0149C33.0213 42.8327 33.171 42.6814 33.3521 42.5768C33.5332 42.4723 33.7391 42.4183 33.9482 42.4205C34.1573 42.4228 34.3621 42.4812 34.5409 42.5897L58.2888 57.2777C58.4613 57.3866 58.6034 57.5374 58.7019 57.716C58.8003 57.8946 58.852 58.0952 58.852 58.2992C58.852 58.5032 58.8003 58.7038 58.7019 58.8824C58.6034 59.061 58.4613 59.2118 58.2888 59.3207\" fill=\"white\"/\u003e\n\u003cpath d=\"M59.8433 53.5507L36.2293 38.9697C36.0571 38.8607 35.9152 38.7098 35.8169 38.5312C35.7186 38.3526 35.667 38.1521 35.667 37.9482C35.667 37.7443 35.7186 37.5438 35.8169 37.3652C35.9152 37.1866 36.0571 37.0358 36.2293 36.9267L59.8433 22.3057C60.0221 22.1975 60.2267 22.1392 60.4357 22.1369C60.6447 22.1346 60.8505 22.1884 61.0316 22.2927C61.2128 22.3969 61.3627 22.5479 61.4657 22.7297C61.5687 22.9116 61.621 23.1177 61.6173 23.3267V52.5267C61.6214 52.7358 61.5692 52.9421 61.4663 53.1242C61.3634 53.3062 61.2134 53.4573 61.0321 53.5617C60.8508 53.666 60.6449 53.7197 60.4358 53.7173C60.2267 53.7148 60.022 53.6563 59.8433 53.5477\" fill=\"white\"/\u003e\n\u003cpath d=\"M90.8881 77.6447L67.2781 63.0347C67.0993 62.9265 66.8947 62.8683 66.6857 62.8661C66.4767 62.864 66.2711 62.918 66.0901 63.0226C65.9092 63.1271 65.7596 63.2783 65.657 63.4604C65.5545 63.6424 65.5027 63.8487 65.5071 64.0577V93.2627C65.5026 93.4717 65.5542 93.678 65.6568 93.8602C65.7593 94.0423 65.909 94.1935 66.09 94.298C66.271 94.4025 66.4768 94.4564 66.6858 94.454C66.8948 94.4517 67.0995 94.3932 67.2781 94.2847L90.886 79.6847C91.0587 79.576 91.2011 79.4253 91.2997 79.2466C91.3984 79.068 91.4501 78.8672 91.4501 78.6632C91.4501 78.4591 91.3984 78.2584 91.2997 78.0797C91.2011 77.9011 91.0587 77.7504 90.886 77.6417\" fill=\"white\"/\u003e\n\u003cpath d=\"M99.979 74.0427L126.379 57.7157C126.606 57.5735 126.793 57.3758 126.922 57.1414C127.052 56.907 127.119 56.6435 127.119 56.3757V23.2757C127.123 23.0728 127.072 22.8726 126.972 22.696C126.873 22.5193 126.727 22.3727 126.552 22.2713C126.376 22.17 126.176 22.1177 125.973 22.1199C125.77 22.122 125.572 22.1786 125.398 22.2837L99.009 38.6117C98.7807 38.7534 98.5923 38.9508 98.4613 39.1854C98.3302 39.42 98.2609 39.684 98.26 39.9527V73.0527C98.2562 73.2554 98.3068 73.4555 98.4066 73.632C98.5063 73.8085 98.6516 73.955 98.8272 74.0563C99.0029 74.1576 99.2025 74.2099 99.4052 74.2079C99.608 74.2059 99.8065 74.1495 99.9801 74.0447\" fill=\"white\"/\u003e\n\u003cpath d=\"M97.0924 35.1247L123.692 18.6677C123.86 18.5622 123.998 18.416 124.094 18.2427C124.189 18.0694 124.24 17.8747 124.24 17.6767C124.24 17.4787 124.189 17.284 124.094 17.1107C123.998 16.9374 123.86 16.7912 123.692 16.6857L97.1364 0.227692C96.8981 0.0788925 96.6227 0 96.3418 0C96.0609 0 95.7856 0.0788925 95.5474 0.227692L68.9594 16.6857C68.7923 16.7916 68.6547 16.9381 68.5593 17.1114C68.464 17.2848 68.4141 17.4794 68.4141 17.6772C68.4141 17.875 68.464 18.0696 68.5593 18.243C68.6547 18.4163 68.7923 18.5628 68.9594 18.6687L95.5023 35.1247C95.7406 35.2735 96.0159 35.3524 96.2969 35.3524C96.5778 35.3524 96.853 35.2735 97.0913 35.1247\" fill=\"white\"/\u003e\n\u003cpath d=\"M68.8291 59.3217L92.576 74.0107C92.7548 74.1188 92.9593 74.1769 93.1682 74.1791C93.3771 74.1812 93.5828 74.1273 93.7638 74.0229C93.9448 73.9185 94.0945 73.7675 94.1973 73.5856C94.3 73.4037 94.352 73.1976 94.348 72.9887V43.6127C94.3525 43.4036 94.3008 43.1972 94.1982 43.0149C94.0956 42.8327 93.9459 42.6814 93.7648 42.5768C93.5836 42.4723 93.3778 42.4183 93.1687 42.4205C92.9596 42.4228 92.7549 42.4812 92.576 42.5897L68.8291 57.2777C68.6571 57.3869 68.5154 57.5378 68.4172 57.7164C68.3191 57.895 68.2676 58.0954 68.2676 58.2992C68.2676 58.503 68.3191 58.7035 68.4172 58.882C68.5154 59.0606 68.6571 59.2115 68.8291 59.3207\" fill=\"white\"/\u003e\n\u003cpath d=\"M67.2771 53.5507L90.8911 38.9697C91.0631 38.8605 91.2048 38.7096 91.303 38.531C91.4011 38.3524 91.4526 38.152 91.4526 37.9482C91.4526 37.7444 91.4011 37.544 91.303 37.3654C91.2048 37.1868 91.0631 37.0359 90.8911 36.9267L67.2771 22.3057C67.0985 22.1976 66.8941 22.1394 66.6853 22.1372C66.4765 22.1349 66.271 22.1888 66.0901 22.2931C65.9092 22.3974 65.7596 22.5483 65.6569 22.7301C65.5542 22.9119 65.5021 23.1179 65.5061 23.3267V52.5267C65.5017 52.7356 65.5536 52.9418 65.6563 53.1238C65.7589 53.3058 65.9086 53.4569 66.0896 53.5613C66.2706 53.6656 66.4763 53.7194 66.6852 53.717C66.8941 53.7146 67.0985 53.6562 67.2771 53.5477\" fill=\"white\"/\u003e\n\u003c/svg\u003e\n" + "svgColor": "", + "svgWhite": "" }, "version": "v1.0.0" } \ No newline at end of file diff --git a/server/meshmodel/accurate/v1.4.3/v1.0.0/components/SubNamespace.json b/server/meshmodel/accurate/v1.4.3/v1.0.0/components/SubNamespace.json index f9235f2742e..254c8b5fb56 100644 --- a/server/meshmodel/accurate/v1.4.3/v1.0.0/components/SubNamespace.json +++ b/server/meshmodel/accurate/v1.4.3/v1.0.0/components/SubNamespace.json @@ -1,5 +1,128 @@ { - "capabilities": null, + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], "component": { "kind": "SubNamespace", "schema": "{\n \"description\": \"SubNamespace is the Schema for the subnamespaces API\\nDeprecated: This type will be removed in one of the next releases.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"Spec is the spec of SubNamespace.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations are the annotations to be propagated to the sub-namespace.\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels are the labels to be propagated to the sub-namespace\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Sub Namespace\",\n \"type\": \"object\"\n}", @@ -62,11 +185,11 @@ "schemaVersion": "components.meshery.io/v1beta1", "status": "enabled", "styles": { - "primaryColor": "#EF3F24", - "secondaryColor": "#00D3A9", + "primaryColor": "#14191f", + "secondaryColor": "#14191f", "shape": "circle", - "svgColor": "\u003csvg width=\"128\" height=\"95\" viewBox=\"0 0 128 95\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cpath d=\"M36.2311 77.6447L59.8431 63.0347C60.0219 62.9266 60.2266 62.8684 60.4356 62.8663C60.6446 62.8642 60.8503 62.9182 61.0313 63.0227C61.2123 63.1272 61.362 63.2784 61.4647 63.4604C61.5673 63.6425 61.6194 63.8487 61.6152 64.0577V93.2627C61.6195 93.4717 61.5676 93.678 61.4649 93.8601C61.3622 94.0422 61.2125 94.1934 61.0314 94.2978C60.8503 94.4023 60.6445 94.4561 60.4355 94.4538C60.2264 94.4515 60.0218 94.3931 59.8431 94.2847L36.2311 79.6847C36.0587 79.5758 35.9165 79.425 35.8181 79.2464C35.7196 79.0678 35.668 78.8671 35.668 78.6632C35.668 78.4592 35.7196 78.2586 35.8181 78.08C35.9165 77.9013 36.0587 77.7506 36.2311 77.6417\" fill=\"#EF3F24\"/\u003e\n\u003cpath d=\"M27.1402 74.0427L0.74019 57.7157C0.512617 57.5742 0.325121 57.3767 0.195573 57.1421C0.0660251 56.9075 -0.00124145 56.6437 0.000199362 56.3757V23.2757C-0.00360272 23.073 0.0470401 22.8729 0.146806 22.6964C0.246572 22.5199 0.391825 22.3734 0.56746 22.2721C0.743095 22.1708 0.942659 22.1184 1.1454 22.1205C1.34814 22.1225 1.54667 22.1789 1.72023 22.2837L28.1043 38.6097C28.3325 38.7514 28.521 38.9488 28.652 39.1834C28.783 39.418 28.8522 39.682 28.8532 39.9507V73.0507C28.857 73.2534 28.8064 73.4534 28.7067 73.6299C28.6069 73.8064 28.4615 73.953 28.2859 74.0543C28.1103 74.1556 27.9108 74.2079 27.708 74.2059C27.5053 74.2039 27.3068 74.1475 27.1332 74.0427\" fill=\"#EF3F24\"/\u003e\n\u003cpath d=\"M30.031 35.1247L3.43097 18.6677C3.26343 18.5622 3.12541 18.416 3.02972 18.2427C2.93403 18.0694 2.88379 17.8747 2.88379 17.6767C2.88379 17.4787 2.93403 17.284 3.02972 17.1107C3.12541 16.9374 3.26343 16.7912 3.43097 16.6857L29.9869 0.227692C30.2252 0.0788925 30.5006 0 30.7815 0C31.0624 0 31.3376 0.0788925 31.5759 0.227692L58.163 16.6857C58.3303 16.7915 58.4681 16.9378 58.5636 17.1112C58.6591 17.2846 58.7092 17.4793 58.7092 17.6772C58.7092 17.8751 58.6591 18.0698 58.5636 18.2432C58.4681 18.4166 58.3303 18.5629 58.163 18.6687L31.62 35.1247C31.3818 35.2733 31.1067 35.3521 30.8259 35.3521C30.5452 35.3521 30.2692 35.2733 30.031 35.1247Z\" fill=\"#EF3F24\"/\u003e\n\u003cpath d=\"M58.2888 59.3217L34.5409 74.0107C34.3621 74.1188 34.1575 74.1769 33.9486 74.1791C33.7397 74.1812 33.534 74.1273 33.3531 74.0229C33.1721 73.9185 33.0225 73.7675 32.9197 73.5856C32.8169 73.4037 32.7648 73.1976 32.7688 72.9887V43.6127C32.7643 43.4036 32.8161 43.1972 32.9187 43.0149C33.0213 42.8327 33.171 42.6814 33.3521 42.5768C33.5332 42.4723 33.7391 42.4183 33.9482 42.4205C34.1573 42.4228 34.3621 42.4812 34.5409 42.5897L58.2888 57.2777C58.4613 57.3866 58.6034 57.5374 58.7019 57.716C58.8003 57.8946 58.852 58.0952 58.852 58.2992C58.852 58.5032 58.8003 58.7038 58.7019 58.8824C58.6034 59.061 58.4613 59.2118 58.2888 59.3207\" fill=\"#EF3F24\"/\u003e\n\u003cpath d=\"M59.8433 53.5507L36.2293 38.9697C36.0571 38.8607 35.9152 38.7098 35.8169 38.5312C35.7186 38.3526 35.667 38.1521 35.667 37.9482C35.667 37.7443 35.7186 37.5438 35.8169 37.3652C35.9152 37.1866 36.0571 37.0358 36.2293 36.9267L59.8433 22.3057C60.0221 22.1975 60.2267 22.1392 60.4357 22.1369C60.6447 22.1346 60.8505 22.1884 61.0316 22.2927C61.2128 22.3969 61.3627 22.5479 61.4657 22.7297C61.5687 22.9116 61.621 23.1177 61.6173 23.3267V52.5267C61.6214 52.7358 61.5692 52.9421 61.4663 53.1242C61.3634 53.3062 61.2134 53.4573 61.0321 53.5617C60.8508 53.666 60.6449 53.7197 60.4358 53.7173C60.2267 53.7148 60.022 53.6563 59.8433 53.5477\" fill=\"#EF3F24\"/\u003e\n\u003cpath d=\"M90.8881 77.6447L67.2781 63.0347C67.0993 62.9265 66.8947 62.8683 66.6857 62.8661C66.4767 62.864 66.2711 62.918 66.0901 63.0226C65.9092 63.1271 65.7596 63.2783 65.657 63.4604C65.5545 63.6424 65.5027 63.8487 65.5071 64.0577V93.2627C65.5026 93.4717 65.5542 93.678 65.6568 93.8602C65.7593 94.0423 65.909 94.1935 66.09 94.298C66.271 94.4025 66.4768 94.4564 66.6858 94.454C66.8948 94.4517 67.0995 94.3932 67.2781 94.2847L90.886 79.6847C91.0587 79.576 91.2011 79.4253 91.2997 79.2466C91.3984 79.068 91.4501 78.8672 91.4501 78.6632C91.4501 78.4591 91.3984 78.2584 91.2997 78.0797C91.2011 77.9011 91.0587 77.7504 90.886 77.6417\" fill=\"#EF3F24\"/\u003e\n\u003cpath d=\"M99.979 74.0427L126.379 57.7157C126.606 57.5735 126.793 57.3758 126.922 57.1414C127.052 56.907 127.119 56.6435 127.119 56.3757V23.2757C127.123 23.0728 127.072 22.8726 126.972 22.696C126.873 22.5193 126.727 22.3727 126.552 22.2713C126.376 22.17 126.176 22.1177 125.973 22.1199C125.77 22.122 125.572 22.1786 125.398 22.2837L99.009 38.6117C98.7807 38.7534 98.5923 38.9508 98.4613 39.1854C98.3302 39.42 98.2609 39.684 98.26 39.9527V73.0527C98.2562 73.2554 98.3068 73.4555 98.4066 73.632C98.5063 73.8085 98.6516 73.955 98.8272 74.0563C99.0029 74.1576 99.2025 74.2099 99.4052 74.2079C99.608 74.2059 99.8065 74.1495 99.9801 74.0447\" fill=\"#EF3F24\"/\u003e\n\u003cpath d=\"M97.0924 35.1247L123.692 18.6677C123.86 18.5622 123.998 18.416 124.094 18.2427C124.189 18.0694 124.24 17.8747 124.24 17.6767C124.24 17.4787 124.189 17.284 124.094 17.1107C123.998 16.9374 123.86 16.7912 123.692 16.6857L97.1364 0.227692C96.8981 0.0788925 96.6227 0 96.3418 0C96.0609 0 95.7856 0.0788925 95.5474 0.227692L68.9594 16.6857C68.7923 16.7916 68.6547 16.9381 68.5593 17.1114C68.464 17.2848 68.4141 17.4794 68.4141 17.6772C68.4141 17.875 68.464 18.0696 68.5593 18.243C68.6547 18.4163 68.7923 18.5628 68.9594 18.6687L95.5023 35.1247C95.7406 35.2735 96.0159 35.3524 96.2969 35.3524C96.5778 35.3524 96.853 35.2735 97.0913 35.1247\" fill=\"#EF3F24\"/\u003e\n\u003cpath d=\"M68.8291 59.3217L92.576 74.0107C92.7548 74.1188 92.9593 74.1769 93.1682 74.1791C93.3771 74.1812 93.5828 74.1273 93.7638 74.0229C93.9448 73.9185 94.0945 73.7675 94.1973 73.5856C94.3 73.4037 94.352 73.1976 94.348 72.9887V43.6127C94.3525 43.4036 94.3008 43.1972 94.1982 43.0149C94.0956 42.8327 93.9459 42.6814 93.7648 42.5768C93.5836 42.4723 93.3778 42.4183 93.1687 42.4205C92.9596 42.4228 92.7549 42.4812 92.576 42.5897L68.8291 57.2777C68.6571 57.3869 68.5154 57.5378 68.4172 57.7164C68.3191 57.895 68.2676 58.0954 68.2676 58.2992C68.2676 58.503 68.3191 58.7035 68.4172 58.882C68.5154 59.0606 68.6571 59.2115 68.8291 59.3207\" fill=\"#EF3F24\"/\u003e\n\u003cpath d=\"M67.2771 53.5507L90.8911 38.9697C91.0631 38.8605 91.2048 38.7096 91.303 38.531C91.4011 38.3524 91.4526 38.152 91.4526 37.9482C91.4526 37.7444 91.4011 37.544 91.303 37.3654C91.2048 37.1868 91.0631 37.0359 90.8911 36.9267L67.2771 22.3057C67.0985 22.1976 66.8941 22.1394 66.6853 22.1372C66.4765 22.1349 66.271 22.1888 66.0901 22.2931C65.9092 22.3974 65.7596 22.5483 65.6569 22.7301C65.5542 22.9119 65.5021 23.1179 65.5061 23.3267V52.5267C65.5017 52.7356 65.5536 52.9418 65.6563 53.1238C65.7589 53.3058 65.9086 53.4569 66.0896 53.5613C66.2706 53.6656 66.4763 53.7194 66.6852 53.717C66.8941 53.7146 67.0985 53.6562 67.2771 53.5477\" fill=\"#EF3F24\"/\u003e\n\u003c/svg\u003e\n", - "svgWhite": "\u003csvg width=\"128\" height=\"95\" viewBox=\"0 0 128 95\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cpath d=\"M36.2311 77.6447L59.8431 63.0347C60.0219 62.9266 60.2266 62.8684 60.4356 62.8663C60.6446 62.8642 60.8503 62.9182 61.0313 63.0227C61.2123 63.1272 61.362 63.2784 61.4647 63.4604C61.5673 63.6425 61.6194 63.8487 61.6152 64.0577V93.2627C61.6195 93.4717 61.5676 93.678 61.4649 93.8601C61.3622 94.0422 61.2125 94.1934 61.0314 94.2978C60.8503 94.4023 60.6445 94.4561 60.4355 94.4538C60.2264 94.4515 60.0218 94.3931 59.8431 94.2847L36.2311 79.6847C36.0587 79.5758 35.9165 79.425 35.8181 79.2464C35.7196 79.0678 35.668 78.8671 35.668 78.6632C35.668 78.4592 35.7196 78.2586 35.8181 78.08C35.9165 77.9013 36.0587 77.7506 36.2311 77.6417\" fill=\"white\"/\u003e\n\u003cpath d=\"M27.1402 74.0427L0.74019 57.7157C0.512617 57.5742 0.325121 57.3767 0.195573 57.1421C0.0660251 56.9075 -0.00124145 56.6437 0.000199362 56.3757V23.2757C-0.00360272 23.073 0.0470401 22.8729 0.146806 22.6964C0.246572 22.5199 0.391825 22.3734 0.56746 22.2721C0.743095 22.1708 0.942659 22.1184 1.1454 22.1205C1.34814 22.1225 1.54667 22.1789 1.72023 22.2837L28.1043 38.6097C28.3325 38.7514 28.521 38.9488 28.652 39.1834C28.783 39.418 28.8522 39.682 28.8532 39.9507V73.0507C28.857 73.2534 28.8064 73.4534 28.7067 73.6299C28.6069 73.8064 28.4615 73.953 28.2859 74.0543C28.1103 74.1556 27.9108 74.2079 27.708 74.2059C27.5053 74.2039 27.3068 74.1475 27.1332 74.0427\" fill=\"white\"/\u003e\n\u003cpath d=\"M30.031 35.1247L3.43097 18.6677C3.26343 18.5622 3.12541 18.416 3.02972 18.2427C2.93403 18.0694 2.88379 17.8747 2.88379 17.6767C2.88379 17.4787 2.93403 17.284 3.02972 17.1107C3.12541 16.9374 3.26343 16.7912 3.43097 16.6857L29.9869 0.227692C30.2252 0.0788925 30.5006 0 30.7815 0C31.0624 0 31.3376 0.0788925 31.5759 0.227692L58.163 16.6857C58.3303 16.7915 58.4681 16.9378 58.5636 17.1112C58.6591 17.2846 58.7092 17.4793 58.7092 17.6772C58.7092 17.8751 58.6591 18.0698 58.5636 18.2432C58.4681 18.4166 58.3303 18.5629 58.163 18.6687L31.62 35.1247C31.3818 35.2733 31.1067 35.3521 30.8259 35.3521C30.5452 35.3521 30.2692 35.2733 30.031 35.1247Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M58.2888 59.3217L34.5409 74.0107C34.3621 74.1188 34.1575 74.1769 33.9486 74.1791C33.7397 74.1812 33.534 74.1273 33.3531 74.0229C33.1721 73.9185 33.0225 73.7675 32.9197 73.5856C32.8169 73.4037 32.7648 73.1976 32.7688 72.9887V43.6127C32.7643 43.4036 32.8161 43.1972 32.9187 43.0149C33.0213 42.8327 33.171 42.6814 33.3521 42.5768C33.5332 42.4723 33.7391 42.4183 33.9482 42.4205C34.1573 42.4228 34.3621 42.4812 34.5409 42.5897L58.2888 57.2777C58.4613 57.3866 58.6034 57.5374 58.7019 57.716C58.8003 57.8946 58.852 58.0952 58.852 58.2992C58.852 58.5032 58.8003 58.7038 58.7019 58.8824C58.6034 59.061 58.4613 59.2118 58.2888 59.3207\" fill=\"white\"/\u003e\n\u003cpath d=\"M59.8433 53.5507L36.2293 38.9697C36.0571 38.8607 35.9152 38.7098 35.8169 38.5312C35.7186 38.3526 35.667 38.1521 35.667 37.9482C35.667 37.7443 35.7186 37.5438 35.8169 37.3652C35.9152 37.1866 36.0571 37.0358 36.2293 36.9267L59.8433 22.3057C60.0221 22.1975 60.2267 22.1392 60.4357 22.1369C60.6447 22.1346 60.8505 22.1884 61.0316 22.2927C61.2128 22.3969 61.3627 22.5479 61.4657 22.7297C61.5687 22.9116 61.621 23.1177 61.6173 23.3267V52.5267C61.6214 52.7358 61.5692 52.9421 61.4663 53.1242C61.3634 53.3062 61.2134 53.4573 61.0321 53.5617C60.8508 53.666 60.6449 53.7197 60.4358 53.7173C60.2267 53.7148 60.022 53.6563 59.8433 53.5477\" fill=\"white\"/\u003e\n\u003cpath d=\"M90.8881 77.6447L67.2781 63.0347C67.0993 62.9265 66.8947 62.8683 66.6857 62.8661C66.4767 62.864 66.2711 62.918 66.0901 63.0226C65.9092 63.1271 65.7596 63.2783 65.657 63.4604C65.5545 63.6424 65.5027 63.8487 65.5071 64.0577V93.2627C65.5026 93.4717 65.5542 93.678 65.6568 93.8602C65.7593 94.0423 65.909 94.1935 66.09 94.298C66.271 94.4025 66.4768 94.4564 66.6858 94.454C66.8948 94.4517 67.0995 94.3932 67.2781 94.2847L90.886 79.6847C91.0587 79.576 91.2011 79.4253 91.2997 79.2466C91.3984 79.068 91.4501 78.8672 91.4501 78.6632C91.4501 78.4591 91.3984 78.2584 91.2997 78.0797C91.2011 77.9011 91.0587 77.7504 90.886 77.6417\" fill=\"white\"/\u003e\n\u003cpath d=\"M99.979 74.0427L126.379 57.7157C126.606 57.5735 126.793 57.3758 126.922 57.1414C127.052 56.907 127.119 56.6435 127.119 56.3757V23.2757C127.123 23.0728 127.072 22.8726 126.972 22.696C126.873 22.5193 126.727 22.3727 126.552 22.2713C126.376 22.17 126.176 22.1177 125.973 22.1199C125.77 22.122 125.572 22.1786 125.398 22.2837L99.009 38.6117C98.7807 38.7534 98.5923 38.9508 98.4613 39.1854C98.3302 39.42 98.2609 39.684 98.26 39.9527V73.0527C98.2562 73.2554 98.3068 73.4555 98.4066 73.632C98.5063 73.8085 98.6516 73.955 98.8272 74.0563C99.0029 74.1576 99.2025 74.2099 99.4052 74.2079C99.608 74.2059 99.8065 74.1495 99.9801 74.0447\" fill=\"white\"/\u003e\n\u003cpath d=\"M97.0924 35.1247L123.692 18.6677C123.86 18.5622 123.998 18.416 124.094 18.2427C124.189 18.0694 124.24 17.8747 124.24 17.6767C124.24 17.4787 124.189 17.284 124.094 17.1107C123.998 16.9374 123.86 16.7912 123.692 16.6857L97.1364 0.227692C96.8981 0.0788925 96.6227 0 96.3418 0C96.0609 0 95.7856 0.0788925 95.5474 0.227692L68.9594 16.6857C68.7923 16.7916 68.6547 16.9381 68.5593 17.1114C68.464 17.2848 68.4141 17.4794 68.4141 17.6772C68.4141 17.875 68.464 18.0696 68.5593 18.243C68.6547 18.4163 68.7923 18.5628 68.9594 18.6687L95.5023 35.1247C95.7406 35.2735 96.0159 35.3524 96.2969 35.3524C96.5778 35.3524 96.853 35.2735 97.0913 35.1247\" fill=\"white\"/\u003e\n\u003cpath d=\"M68.8291 59.3217L92.576 74.0107C92.7548 74.1188 92.9593 74.1769 93.1682 74.1791C93.3771 74.1812 93.5828 74.1273 93.7638 74.0229C93.9448 73.9185 94.0945 73.7675 94.1973 73.5856C94.3 73.4037 94.352 73.1976 94.348 72.9887V43.6127C94.3525 43.4036 94.3008 43.1972 94.1982 43.0149C94.0956 42.8327 93.9459 42.6814 93.7648 42.5768C93.5836 42.4723 93.3778 42.4183 93.1687 42.4205C92.9596 42.4228 92.7549 42.4812 92.576 42.5897L68.8291 57.2777C68.6571 57.3869 68.5154 57.5378 68.4172 57.7164C68.3191 57.895 68.2676 58.0954 68.2676 58.2992C68.2676 58.503 68.3191 58.7035 68.4172 58.882C68.5154 59.0606 68.6571 59.2115 68.8291 59.3207\" fill=\"white\"/\u003e\n\u003cpath d=\"M67.2771 53.5507L90.8911 38.9697C91.0631 38.8605 91.2048 38.7096 91.303 38.531C91.4011 38.3524 91.4526 38.152 91.4526 37.9482C91.4526 37.7444 91.4011 37.544 91.303 37.3654C91.2048 37.1868 91.0631 37.0359 90.8911 36.9267L67.2771 22.3057C67.0985 22.1976 66.8941 22.1394 66.6853 22.1372C66.4765 22.1349 66.271 22.1888 66.0901 22.2931C65.9092 22.3974 65.7596 22.5483 65.6569 22.7301C65.5542 22.9119 65.5021 23.1179 65.5061 23.3267V52.5267C65.5017 52.7356 65.5536 52.9418 65.6563 53.1238C65.7589 53.3058 65.9086 53.4569 66.0896 53.5613C66.2706 53.6656 66.4763 53.7194 66.6852 53.717C66.8941 53.7146 67.0985 53.6562 67.2771 53.5477\" fill=\"white\"/\u003e\n\u003c/svg\u003e\n" + "svgColor": "", + "svgWhite": "" }, "version": "v1.0.0" } \ No newline at end of file diff --git a/server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/AdoptedResource.json b/server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/AdoptedResource.json new file mode 100644 index 00000000000..4815496c9e8 --- /dev/null +++ b/server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/AdoptedResource.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "AdoptedResource", + "schema": "{\n \"description\": \"AdoptedResource is the schema for the AdoptedResource API.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"AdoptedResourceSpec defines the desired state of the AdoptedResource.\",\n \"properties\": {\n \"aws\": {\n \"description\": \"AWSIdentifiers provide all unique ways to reference an AWS resource.\",\n \"properties\": {\n \"additionalKeys\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"AdditionalKeys represents any additional arbitrary identifiers used when\\ndescribing the target resource.\",\n \"type\": \"object\"\n },\n \"arn\": {\n \"description\": \"ARN is the AWS Resource Name for the resource. It is a globally\\nunique identifier.\",\n \"type\": \"string\"\n },\n \"nameOrID\": {\n \"description\": \"NameOrId is a user-supplied string identifier for the resource. It may\\nor may not be globally unique, depending on the type of resource.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"kubernetes\": {\n \"description\": \"ResourceWithMetadata provides the values necessary to create a\\nKubernetes resource and override any of its metadata values.\",\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"ObjectMeta is metadata that all persisted resources must have, which includes all objects\\nusers must create.\\nIt is not possible to use `metav1.ObjectMeta` inside spec, as the controller-gen\\nautomatically converts this to an arbitrary string-string map.\\nhttps://github.com/kubernetes-sigs/controller-tools/issues/385\\n\\n\\nActive discussion about inclusion of this field in the spec is happening in this PR:\\nhttps://github.com/kubernetes-sigs/controller-tools/pull/395\\n\\n\\nUntil this is allowed, or if it never is, we will produce a subset of the object meta\\nthat contains only the fields which the user is allowed to modify in the metadata.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: http://kubernetes.io/docs/user-guide/annotations\",\n \"type\": \"object\"\n },\n \"generateName\": {\n \"description\": \"GenerateName is an optional prefix, used by the server, to generate a unique\\nname ONLY IF the Name field has not been provided.\\nIf this field is used, the name returned to the client will be different\\nthan the name passed. This value will also be combined with a unique suffix.\\nThe provided value has the same validation rules as the Name field,\\nand may be truncated by the length of the suffix required to make the value\\nunique on the server.\\n\\n\\nIf this field is specified and the generated name exists, the server will\\nNOT return a 409 - instead, it will either return 201 Created or 500 with Reason\\nServerTimeout indicating a unique name could not be found in the time allotted, and the client\\nshould retry (optionally after the time indicated in the Retry-After header).\\n\\n\\nApplied only if Name is not specified.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: http://kubernetes.io/docs/user-guide/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: http://kubernetes.io/docs/user-guide/identifiers#names\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace defines the space within each name must be unique. An empty namespace is\\nequivalent to the \\\"default\\\" namespace, but \\\"default\\\" is the canonical representation.\\nNot all objects are required to be scoped to a namespace - the value of this field for\\nthose objects will be empty.\\n\\n\\nMust be a DNS_LABEL.\\nCannot be updated.\\nMore info: http://kubernetes.io/docs/user-guide/namespaces\",\n \"type\": \"string\"\n },\n \"ownerReferences\": {\n \"description\": \"List of objects depended by this object. If ALL objects in the list have\\nbeen deleted, this object will be garbage collected. If this object is managed by a controller,\\nthen an entry in this list will point to this controller, with the controller field set to true.\\nThere cannot be more than one managing controller.\",\n \"items\": {\n \"description\": \"OwnerReference contains enough information to let you identify an owning\\nobject. An owning object must be in the same namespace as the dependent, or\\nbe cluster-scoped, so there is no namespace field.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"API version of the referent.\",\n \"type\": \"string\"\n },\n \"blockOwnerDeletion\": {\n \"description\": \"If true, AND if the owner has the \\\"foregroundDeletion\\\" finalizer, then\\nthe owner cannot be deleted from the key-value store until this\\nreference is removed.\\nSee https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion\\nfor how the garbage collector interacts with this field and enforces the foreground deletion.\\nDefaults to false.\\nTo set this field, a user needs \\\"delete\\\" permission of the owner,\\notherwise 422 (Unprocessable Entity) will be returned.\",\n \"type\": \"boolean\"\n },\n \"controller\": {\n \"description\": \"If true, this reference points to the managing controller.\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of the referent.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n },\n \"uid\": {\n \"description\": \"UID of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"apiVersion\",\n \"kind\",\n \"name\",\n \"uid\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"group\",\n \"kind\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"aws\",\n \"kubernetes\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Adopted Resource\",\n \"type\": \"object\"\n}", + "version": "services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Adopted Resource", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/eventbridge-controller/main/helm" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "AWS EventBridge", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#E7157B", + "shape": "right-rhomboid", + "source_uri": "git://github.com/aws-controllers-k8s/eventbridge-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.0.14" + }, + "name": "aws-eventbridge-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Streaming \u0026 Messaging", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#E7157B", + "shape": "right-rhomboid", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/Archive.json b/server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/Archive.json new file mode 100644 index 00000000000..50426f0c6b1 --- /dev/null +++ b/server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/Archive.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "Archive", + "schema": "{\n \"description\": \"Archive is the Schema for the Archives API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"ArchiveSpec defines the desired state of Archive.\\n\\n\\nAn Archive object that contains details about an archive.\",\n \"properties\": {\n \"description\": {\n \"description\": \"A description for the archive.\",\n \"type\": \"string\"\n },\n \"eventPattern\": {\n \"description\": \"An event pattern to use to filter events sent to the archive.\",\n \"type\": \"string\"\n },\n \"eventSourceARN\": {\n \"description\": \"The ARN of the event bus that sends events to the archive.\",\n \"type\": \"string\"\n },\n \"eventSourceRef\": {\n \"description\": \"AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\\ntype to provide more user friendly syntax for references using 'from' field\\nEx:\\nAPIIDRef:\\n\\n\\n\\tfrom:\\n\\t name: my-api\",\n \"properties\": {\n \"from\": {\n \"description\": \"AWSResourceReference provides all the values necessary to reference another\\nk8s resource for finding the identifier(Id/ARN/Name)\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The name for the archive to create.\",\n \"type\": \"string\"\n },\n \"retentionDays\": {\n \"description\": \"The number of days to retain events for. Default value is 0. If set to 0,\\nevents are retained indefinitely\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Archive\",\n \"type\": \"object\"\n}", + "version": "eventbridge.services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Archive", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/eventbridge-controller/main/helm" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "AWS EventBridge", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#E7157B", + "shape": "right-rhomboid", + "source_uri": "git://github.com/aws-controllers-k8s/eventbridge-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.0.14" + }, + "name": "aws-eventbridge-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Streaming \u0026 Messaging", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#E7157B", + "shape": "right-rhomboid", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/Endpoint.json b/server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/Endpoint.json new file mode 100644 index 00000000000..47cbeb45df7 --- /dev/null +++ b/server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/Endpoint.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "Endpoint", + "schema": "{\n \"description\": \"Endpoint is the Schema for the Endpoints API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"EndpointSpec defines the desired state of Endpoint.\\n\\n\\nA global endpoint used to improve your application's availability by making\\nit regional-fault tolerant. For more information about global endpoints,\\nsee Making applications Regional-fault tolerant with global endpoints and\\nevent replication (https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-global-endpoints.html)\\nin the Amazon EventBridge User Guide.\",\n \"properties\": {\n \"description\": {\n \"description\": \"A description of the global endpoint.\",\n \"type\": \"string\"\n },\n \"eventBuses\": {\n \"description\": \"Define the event buses used.\\n\\n\\nThe names of the event buses must be identical in each Region.\",\n \"items\": {\n \"description\": \"The event buses the endpoint is associated with.\",\n \"properties\": {\n \"eventBusARN\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"The name of the global endpoint. For example, \\\"Name\\\":\\\"us-east-2-custom_bus_A-endpoint\\\".\",\n \"type\": \"string\"\n },\n \"replicationConfig\": {\n \"description\": \"Enable or disable event replication. The default state is ENABLED which means\\nyou must supply a RoleArn. If you don't have a RoleArn or you don't want\\nevent replication enabled, set the state to DISABLED.\",\n \"properties\": {\n \"state\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"roleARN\": {\n \"description\": \"The ARN of the role used for replication.\",\n \"type\": \"string\"\n },\n \"routingConfig\": {\n \"description\": \"Configure the routing policy, including the health check and secondary Region..\",\n \"properties\": {\n \"failoverConfig\": {\n \"description\": \"The failover configuration for an endpoint. This includes what triggers failover\\nand what happens when it's triggered.\",\n \"properties\": {\n \"primary\": {\n \"description\": \"The primary Region of the endpoint.\",\n \"properties\": {\n \"healthCheck\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"secondary\": {\n \"description\": \"The secondary Region that processes events when failover is triggered or\\nreplication is enabled.\",\n \"properties\": {\n \"route\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"eventBuses\",\n \"name\",\n \"routingConfig\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Endpoint\",\n \"type\": \"object\"\n}", + "version": "eventbridge.services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Endpoint", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/eventbridge-controller/main/helm" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "AWS EventBridge", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#E7157B", + "shape": "right-rhomboid", + "source_uri": "git://github.com/aws-controllers-k8s/eventbridge-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.0.14" + }, + "name": "aws-eventbridge-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Streaming \u0026 Messaging", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#E7157B", + "shape": "right-rhomboid", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/EventBus.json b/server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/EventBus.json new file mode 100644 index 00000000000..a3004375eba --- /dev/null +++ b/server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/EventBus.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "EventBus", + "schema": "{\n \"description\": \"EventBus is the Schema for the EventBuses API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"EventBusSpec defines the desired state of EventBus.\\n\\n\\nAn event bus receives events from a source, uses rules to evaluate them,\\napplies any configured input transformation, and routes them to the appropriate\\ntarget(s). Your account's default event bus receives events from Amazon Web\\nServices services. A custom event bus can receive events from your custom\\napplications and services. A partner event bus receives events from an event\\nsource created by an SaaS partner. These events come from the partners services\\nor applications.\",\n \"properties\": {\n \"eventSourceName\": {\n \"description\": \"If you are creating a partner event bus, this specifies the partner event\\nsource that the new event bus will be matched with.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the new event bus.\\n\\n\\nCustom event bus names can't contain the / character, but you can use the\\n/ character in partner event bus names. In addition, for partner event buses,\\nthe name must exactly match the name of the partner event source that this\\nevent bus is matched to.\\n\\n\\nYou can't use the name default for a custom event bus, as this name is already\\nused for your account's default event bus.\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"Tags to associate with the event bus.\",\n \"items\": {\n \"description\": \"A key-value pair associated with an Amazon Web Services resource. In EventBridge,\\nrules and event buses support tagging.\",\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Event Bus\",\n \"type\": \"object\"\n}", + "version": "eventbridge.services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Event Bus", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/eventbridge-controller/main/helm" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "AWS EventBridge", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#E7157B", + "shape": "right-rhomboid", + "source_uri": "git://github.com/aws-controllers-k8s/eventbridge-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.0.14" + }, + "name": "aws-eventbridge-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Streaming \u0026 Messaging", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#E7157B", + "shape": "right-rhomboid", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/FieldExport.json b/server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/FieldExport.json new file mode 100644 index 00000000000..2717bd7bc2d --- /dev/null +++ b/server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/FieldExport.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "FieldExport", + "schema": "{\n \"description\": \"FieldExport is the schema for the FieldExport API.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"FieldExportSpec defines the desired state of the FieldExport.\",\n \"properties\": {\n \"from\": {\n \"description\": \"ResourceFieldSelector provides the values necessary to identify an individual\\nfield on an individual K8s resource.\",\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"resource\": {\n \"description\": \"NamespacedResource provides all the values necessary to identify an ACK\\nresource of a given type (within the same namespace as the custom resource\\ncontaining this type).\",\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"group\",\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"path\",\n \"resource\"\n ],\n \"type\": \"object\"\n },\n \"to\": {\n \"description\": \"FieldExportTarget provides the values necessary to identify the\\noutput path for a field export.\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key overrides the default value (`\\u003cnamespace\\u003e.\\u003cFieldExport-resource-name\\u003e`) for the FieldExport target\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"FieldExportOutputType represents all types that can be produced by a field\\nexport operation\",\n \"enum\": [\n \"configmap\",\n \"secret\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is marked as optional, so we cannot compose `NamespacedName`\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"from\",\n \"to\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Field Export\",\n \"type\": \"object\"\n}", + "version": "services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Field Export", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/eventbridge-controller/main/helm" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "AWS EventBridge", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#E7157B", + "shape": "right-rhomboid", + "source_uri": "git://github.com/aws-controllers-k8s/eventbridge-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.0.14" + }, + "name": "aws-eventbridge-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Streaming \u0026 Messaging", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#E7157B", + "shape": "right-rhomboid", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/Rule.json b/server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/Rule.json new file mode 100644 index 00000000000..b799da9c2f6 --- /dev/null +++ b/server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/components/Rule.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "Rule", + "schema": "{\n \"description\": \"Rule is the Schema for the Rules API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"RuleSpec defines the desired state of Rule.\\n\\n\\nContains information about a rule in Amazon EventBridge.\",\n \"properties\": {\n \"description\": {\n \"description\": \"A description of the rule.\",\n \"type\": \"string\"\n },\n \"eventBusName\": {\n \"description\": \"The name or ARN of the event bus to associate with this rule. If you omit\\nthis, the default event bus is used.\",\n \"type\": \"string\"\n },\n \"eventBusRef\": {\n \"description\": \"AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\\ntype to provide more user friendly syntax for references using 'from' field\\nEx:\\nAPIIDRef:\\n\\n\\n\\tfrom:\\n\\t name: my-api\",\n \"properties\": {\n \"from\": {\n \"description\": \"AWSResourceReference provides all the values necessary to reference another\\nk8s resource for finding the identifier(Id/ARN/Name)\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"eventPattern\": {\n \"description\": \"The event pattern. For more information, see Amazon EventBridge event patterns\\n(https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html)\\nin the Amazon EventBridge User Guide.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the rule that you are creating or updating.\",\n \"type\": \"string\"\n },\n \"roleARN\": {\n \"description\": \"The Amazon Resource Name (ARN) of the IAM role associated with the rule.\\n\\n\\nIf you're setting an event bus in another account as the target and that\\naccount granted permission to your account through an organization instead\\nof directly by the account ID, you must specify a RoleArn with proper permissions\\nin the Target structure, instead of here in this parameter.\",\n \"type\": \"string\"\n },\n \"scheduleExpression\": {\n \"description\": \"The scheduling expression. For example, \\\"cron(0 20 * * ? *)\\\" or \\\"rate(5 minutes)\\\".\",\n \"type\": \"string\"\n },\n \"state\": {\n \"description\": \"The state of the rule.\\n\\n\\nValid values include:\\n\\n\\n - DISABLED: The rule is disabled. EventBridge does not match any events\\n against the rule.\\n\\n\\n - ENABLED: The rule is enabled. EventBridge matches events against the\\n rule, except for Amazon Web Services management events delivered through\\n CloudTrail.\\n\\n\\n - ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS: The rule is enabled for\\n all events, including Amazon Web Services management events delivered\\n through CloudTrail. Management events provide visibility into management\\n operations that are performed on resources in your Amazon Web Services\\n account. These are also known as control plane operations. For more information,\\n see Logging management events (https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-events-with-cloudtrail.html#logging-management-events)\\n in the CloudTrail User Guide, and Filtering management events from Amazon\\n Web Services services (https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html#eb-service-event-cloudtrail)\\n in the Amazon EventBridge User Guide. This value is only valid for rules\\n on the default (https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is-how-it-works-concepts.html#eb-bus-concepts-buses)\\n event bus or custom event buses (https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-event-bus.html).\\n It does not apply to partner event buses (https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-saas.html).\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"The list of key-value pairs to associate with the rule.\",\n \"items\": {\n \"description\": \"A key-value pair associated with an Amazon Web Services resource. In EventBridge,\\nrules and event buses support tagging.\",\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"targets\": {\n \"items\": {\n \"description\": \"Targets are the resources to be invoked when a rule is triggered. For a complete\\nlist of services and resources that can be set as a target, see PutTargets\\n(https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutTargets.html).\\n\\n\\nIf you are setting the event bus of another account as the target, and that\\naccount granted permission to your account through an organization instead\\nof directly by the account ID, then you must specify a RoleArn with proper\\npermissions in the Target structure. For more information, see Sending and\\nReceiving Events Between Amazon Web Services Accounts (https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-cross-account-event-delivery.html)\\nin the Amazon EventBridge User Guide.\",\n \"properties\": {\n \"arn\": {\n \"type\": \"string\"\n },\n \"batchParameters\": {\n \"description\": \"The custom parameters to be used when the target is an Batch job.\",\n \"properties\": {\n \"arrayProperties\": {\n \"description\": \"The array properties for the submitted job, such as the size of the array.\\nThe array size can be between 2 and 10,000. If you specify array properties\\nfor a job, it becomes an array job. This parameter is used only if the target\\nis an Batch job.\",\n \"properties\": {\n \"size\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"jobDefinition\": {\n \"type\": \"string\"\n },\n \"jobName\": {\n \"type\": \"string\"\n },\n \"retryStrategy\": {\n \"description\": \"The retry strategy to use for failed jobs, if the target is an Batch job.\\nIf you specify a retry strategy here, it overrides the retry strategy defined\\nin the job definition.\",\n \"properties\": {\n \"attempts\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"deadLetterConfig\": {\n \"description\": \"A DeadLetterConfig object that contains information about a dead-letter queue\\nconfiguration.\",\n \"properties\": {\n \"arn\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"ecsParameters\": {\n \"description\": \"The custom parameters to be used when the target is an Amazon ECS task.\",\n \"properties\": {\n \"capacityProviderStrategy\": {\n \"items\": {\n \"description\": \"The details of a capacity provider strategy. To learn more, see CapacityProviderStrategyItem\\n(https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CapacityProviderStrategyItem.html)\\nin the Amazon ECS API Reference.\",\n \"properties\": {\n \"base\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"capacityProvider\": {\n \"type\": \"string\"\n },\n \"weight\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enableECSManagedTags\": {\n \"type\": \"boolean\"\n },\n \"enableExecuteCommand\": {\n \"type\": \"boolean\"\n },\n \"group\": {\n \"type\": \"string\"\n },\n \"launchType\": {\n \"type\": \"string\"\n },\n \"networkConfiguration\": {\n \"description\": \"This structure specifies the network configuration for an ECS task.\",\n \"properties\": {\n \"awsVPCConfiguration\": {\n \"description\": \"This structure specifies the VPC subnets and security groups for the task,\\nand whether a public IP address is to be used. This structure is relevant\\nonly for ECS tasks that use the awsvpc network mode.\",\n \"properties\": {\n \"assignPublicIP\": {\n \"type\": \"string\"\n },\n \"securityGroups\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"subnets\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"placementConstraints\": {\n \"items\": {\n \"description\": \"An object representing a constraint on task placement. To learn more, see\\nTask Placement Constraints (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html)\\nin the Amazon Elastic Container Service Developer Guide.\",\n \"properties\": {\n \"expression\": {\n \"type\": \"string\"\n },\n \"type_\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"placementStrategy\": {\n \"items\": {\n \"description\": \"The task placement strategy for a task or service. To learn more, see Task\\nPlacement Strategies (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-strategies.html)\\nin the Amazon Elastic Container Service Service Developer Guide.\",\n \"properties\": {\n \"field\": {\n \"type\": \"string\"\n },\n \"type_\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"platformVersion\": {\n \"type\": \"string\"\n },\n \"propagateTags\": {\n \"type\": \"string\"\n },\n \"referenceID\": {\n \"type\": \"string\"\n },\n \"tags\": {\n \"items\": {\n \"description\": \"A key-value pair associated with an Amazon Web Services resource. In EventBridge,\\nrules and event buses support tagging.\",\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"taskCount\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"taskDefinitionARN\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"httpParameters\": {\n \"description\": \"These are custom parameter to be used when the target is an API Gateway APIs\\nor EventBridge ApiDestinations. In the latter case, these are merged with\\nany InvocationParameters specified on the Connection, with any values from\\nthe Connection taking precedence.\",\n \"properties\": {\n \"headerParameters\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"pathParameterValues\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"queryStringParameters\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"type\": \"string\"\n },\n \"input\": {\n \"type\": \"string\"\n },\n \"inputPath\": {\n \"type\": \"string\"\n },\n \"inputTransformer\": {\n \"description\": \"Contains the parameters needed for you to provide custom input to a target\\nbased on one or more pieces of data extracted from the event.\",\n \"properties\": {\n \"inputPathsMap\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"inputTemplate\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"kinesisParameters\": {\n \"description\": \"This object enables you to specify a JSON path to extract from the event\\nand use as the partition key for the Amazon Kinesis data stream, so that\\nyou can control the shard to which the event goes. If you do not include\\nthis parameter, the default is to use the eventId as the partition key.\",\n \"properties\": {\n \"partitionKeyPath\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"redshiftDataParameters\": {\n \"description\": \"These are custom parameters to be used when the target is a Amazon Redshift\\ncluster to invoke the Amazon Redshift Data API ExecuteStatement based on\\nEventBridge events.\",\n \"properties\": {\n \"database\": {\n \"description\": \"Redshift Database\",\n \"type\": \"string\"\n },\n \"dbUser\": {\n \"description\": \"Database user name\",\n \"type\": \"string\"\n },\n \"secretManagerARN\": {\n \"description\": \"Optional SecretManager ARN which stores the database credentials\",\n \"type\": \"string\"\n },\n \"sql\": {\n \"description\": \"A single Redshift SQL\",\n \"type\": \"string\"\n },\n \"sqls\": {\n \"description\": \"A list of SQLs.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"statementName\": {\n \"description\": \"A name for Redshift DataAPI statement which can be used as filter of ListStatement.\",\n \"type\": \"string\"\n },\n \"withEvent\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"retryPolicy\": {\n \"description\": \"A RetryPolicy object that includes information about the retry policy settings.\",\n \"properties\": {\n \"maximumEventAgeInSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"maximumRetryAttempts\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"roleARN\": {\n \"type\": \"string\"\n },\n \"runCommandParameters\": {\n \"description\": \"This parameter contains the criteria (either InstanceIds or a tag) used to\\nspecify which EC2 instances are to be sent the command.\",\n \"properties\": {\n \"runCommandTargets\": {\n \"items\": {\n \"description\": \"Information about the EC2 instances that are to be sent the command, specified\\nas key-value pairs. Each RunCommandTarget block can include only one key,\\nbut this key may specify multiple values.\",\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"sageMakerPipelineParameters\": {\n \"description\": \"These are custom parameters to use when the target is a SageMaker Model Building\\nPipeline that starts based on EventBridge events.\",\n \"properties\": {\n \"pipelineParameterList\": {\n \"items\": {\n \"description\": \"Name/Value pair of a parameter to start execution of a SageMaker Model Building\\nPipeline.\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"sqsParameters\": {\n \"description\": \"This structure includes the custom parameter to be used when the target is\\nan SQS FIFO queue.\",\n \"properties\": {\n \"messageGroupID\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Rule\",\n \"type\": \"object\"\n}", + "version": "eventbridge.services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Rule", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/eventbridge-controller/main/helm" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "AWS EventBridge", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#E7157B", + "shape": "right-rhomboid", + "source_uri": "git://github.com/aws-controllers-k8s/eventbridge-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.0.14" + }, + "name": "aws-eventbridge-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Streaming \u0026 Messaging", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#E7157B", + "shape": "right-rhomboid", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/model.json b/server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/model.json new file mode 100644 index 00000000000..794dd829b50 --- /dev/null +++ b/server/meshmodel/aws-eventbridge-controller/v1.0.14/v1.0.0/model.json @@ -0,0 +1,41 @@ +{ + "category": { + "name": "App Definition and Development" + }, + "displayName": "AWS EventBridge", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "capabilities": null, + "isAnnotation": false, + "primaryColor": "#E7157B", + "shape": "right-rhomboid", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-EventBridge_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M11.0555,28.5939541 C9.9095,28.5939541 8.9765,27.653816 8.9765,26.4980407 C8.9765,25.343273 9.9095,24.4031349 11.0555,24.4031349 C12.2015,24.4031349 13.1355,25.343273 13.1355,26.4980407 C13.1355,27.653816 12.2015,28.5939541 11.0555,28.5939541 L11.0555,28.5939541 Z M12.9125,28.9567083 C13.6515,28.389401 14.1355,27.5036761 14.1355,26.4980407 C14.1355,24.7870498 12.7535,23.3954842 11.0555,23.3954842 C10.6365,23.3954842 10.2385,23.4811345 9.8745,23.6342974 L8.0765,20.4964732 L10.4385,16.3741743 L9.5735,15.8703489 L7.0675,20.2445606 C6.9775,20.4007464 6.9775,20.5922 7.0675,20.7483859 L9.0325,24.1784288 C8.3905,24.7467438 7.9765,25.5710021 7.9765,26.4980407 C7.9765,28.2100392 9.3575,29.6016048 11.0555,29.6016048 C11.3975,29.6016048 11.7205,29.5320769 12.0285,29.4282889 L13.5605,32.2718791 C13.6485,32.4341108 13.8165,32.5348759 13.9995,32.5348759 L19.4995,32.5348759 L19.4995,31.5272252 L14.2975,31.5272252 L12.9125,28.9567083 Z M29.9445,16.5605897 C28.7975,16.5605897 27.8645,15.6204516 27.8645,14.4646762 C27.8645,13.3099086 28.7975,12.3687628 29.9445,12.3687628 C31.0905,12.3687628 32.0235,13.3099086 32.0235,14.4646762 C32.0235,15.6204516 31.0905,16.5605897 29.9445,16.5605897 L29.9445,16.5605897 Z M31.9675,16.7852958 C32.6095,16.2159731 33.0235,15.3917149 33.0235,14.4646762 C33.0235,12.7536854 31.6425,11.3611121 29.9445,11.3611121 C29.6035,11.3611121 29.2815,11.43064 28.9745,11.5344281 L27.4415,8.61929464 C27.3555,8.45403993 27.1855,8.35125956 26.9995,8.35125956 L21.4995,8.35125956 L21.4995,9.35891024 L26.6995,9.35891024 L28.0895,12.0029856 C27.3505,12.570293 26.8645,13.4580332 26.8645,14.4646762 C26.8645,16.1756671 28.2455,17.5682403 29.9445,17.5682403 C30.3635,17.5682403 30.7615,17.4815824 31.1245,17.3284195 L32.9225,20.4672514 L30.5615,24.5885426 L31.4265,25.092368 L33.9325,20.719164 C34.0225,20.5629782 34.0225,20.3705169 33.9325,20.2153387 L31.9675,16.7852958 Z M27.3945,32.9923493 C26.2475,32.9923493 25.3145,32.0522112 25.3145,30.8974436 C25.3145,29.7416682 26.2475,28.8015301 27.3945,28.8015301 C28.5405,28.8015301 29.4735,29.7416682 29.4735,30.8974436 C29.4735,32.0522112 28.5405,32.9923493 27.3945,32.9923493 L27.3945,32.9923493 Z M18.2045,24.500877 L15.9115,20.4994962 L18.2045,16.499123 L22.7885,16.499123 L25.0825,20.4994962 L22.7885,24.500877 L18.2045,24.500877 Z M13.6365,12.1984699 C12.4905,12.1984699 11.5575,11.2583318 11.5575,10.1025564 C11.5575,8.94778877 12.4905,8.00765068 13.6365,8.00765068 C14.7835,8.00765068 15.7165,8.94778877 15.7165,10.1025564 C15.7165,11.2583318 14.7835,12.1984699 13.6365,12.1984699 L13.6365,12.1984699 Z M27.3945,27.7938795 C26.7695,27.7938795 26.1895,27.9853331 25.7025,28.308789 L23.6335,25.0419854 L26.0925,20.7514088 C26.1825,20.5962306 26.1825,20.4037694 26.0925,20.2475835 L23.5105,15.743385 C23.4215,15.5871991 23.2565,15.4914723 23.0775,15.4914723 L18.3255,15.4914723 L16.0475,12.0100392 C16.4595,11.4830379 16.7165,10.825042 16.7165,10.1025564 C16.7165,8.39156559 15.3345,7 13.6365,7 C11.9385,7 10.5575,8.39156559 10.5575,10.1025564 C10.5575,11.814555 11.9385,13.2061205 13.6365,13.2061205 C14.2515,13.2061205 14.8235,13.0186975 15.3045,12.7043105 L17.3945,15.8975555 L14.9025,20.2475835 C14.8125,20.4037694 14.8125,20.5962306 14.9025,20.7514088 L17.4835,25.256615 C17.5725,25.4128009 17.7375,25.5085277 17.9155,25.5085277 L22.7435,25.5085277 L24.9625,29.0141444 C24.5625,29.5381228 24.3145,30.1860422 24.3145,30.8974436 C24.3145,32.6074268 25.6965,34 27.3945,34 C29.0925,34 30.4735,32.6074268 30.4735,30.8974436 C30.4735,29.185445 29.0925,27.7938795 27.3945,27.7938795 L27.3945,27.7938795 Z\" id=\"Amazon-EventBridge_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.0.14" + }, + "name": "aws-eventbridge-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Streaming \u0026 Messaging", + "version": "v1.0.0", + "components": null, + "relationships": null + } \ No newline at end of file diff --git a/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/AdoptedResource.json b/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/AdoptedResource.json new file mode 100644 index 00000000000..6f00304789a --- /dev/null +++ b/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/AdoptedResource.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "AdoptedResource", + "schema": "{\n \"description\": \"AdoptedResource is the schema for the AdoptedResource API.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"AdoptedResourceSpec defines the desired state of the AdoptedResource.\",\n \"properties\": {\n \"aws\": {\n \"description\": \"AWSIdentifiers provide all unique ways to reference an AWS resource.\",\n \"properties\": {\n \"additionalKeys\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"AdditionalKeys represents any additional arbitrary identifiers used when\\ndescribing the target resource.\",\n \"type\": \"object\"\n },\n \"arn\": {\n \"description\": \"ARN is the AWS Resource Name for the resource. It is a globally\\nunique identifier.\",\n \"type\": \"string\"\n },\n \"nameOrID\": {\n \"description\": \"NameOrId is a user-supplied string identifier for the resource. It may\\nor may not be globally unique, depending on the type of resource.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"kubernetes\": {\n \"description\": \"ResourceWithMetadata provides the values necessary to create a\\nKubernetes resource and override any of its metadata values.\",\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"ObjectMeta is metadata that all persisted resources must have, which includes all objects\\nusers must create.\\nIt is not possible to use `metav1.ObjectMeta` inside spec, as the controller-gen\\nautomatically converts this to an arbitrary string-string map.\\nhttps://github.com/kubernetes-sigs/controller-tools/issues/385\\n\\n\\nActive discussion about inclusion of this field in the spec is happening in this PR:\\nhttps://github.com/kubernetes-sigs/controller-tools/pull/395\\n\\n\\nUntil this is allowed, or if it never is, we will produce a subset of the object meta\\nthat contains only the fields which the user is allowed to modify in the metadata.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: http://kubernetes.io/docs/user-guide/annotations\",\n \"type\": \"object\"\n },\n \"generateName\": {\n \"description\": \"GenerateName is an optional prefix, used by the server, to generate a unique\\nname ONLY IF the Name field has not been provided.\\nIf this field is used, the name returned to the client will be different\\nthan the name passed. This value will also be combined with a unique suffix.\\nThe provided value has the same validation rules as the Name field,\\nand may be truncated by the length of the suffix required to make the value\\nunique on the server.\\n\\n\\nIf this field is specified and the generated name exists, the server will\\nNOT return a 409 - instead, it will either return 201 Created or 500 with Reason\\nServerTimeout indicating a unique name could not be found in the time allotted, and the client\\nshould retry (optionally after the time indicated in the Retry-After header).\\n\\n\\nApplied only if Name is not specified.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: http://kubernetes.io/docs/user-guide/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: http://kubernetes.io/docs/user-guide/identifiers#names\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace defines the space within each name must be unique. An empty namespace is\\nequivalent to the \\\"default\\\" namespace, but \\\"default\\\" is the canonical representation.\\nNot all objects are required to be scoped to a namespace - the value of this field for\\nthose objects will be empty.\\n\\n\\nMust be a DNS_LABEL.\\nCannot be updated.\\nMore info: http://kubernetes.io/docs/user-guide/namespaces\",\n \"type\": \"string\"\n },\n \"ownerReferences\": {\n \"description\": \"List of objects depended by this object. If ALL objects in the list have\\nbeen deleted, this object will be garbage collected. If this object is managed by a controller,\\nthen an entry in this list will point to this controller, with the controller field set to true.\\nThere cannot be more than one managing controller.\",\n \"items\": {\n \"description\": \"OwnerReference contains enough information to let you identify an owning\\nobject. An owning object must be in the same namespace as the dependent, or\\nbe cluster-scoped, so there is no namespace field.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"API version of the referent.\",\n \"type\": \"string\"\n },\n \"blockOwnerDeletion\": {\n \"description\": \"If true, AND if the owner has the \\\"foregroundDeletion\\\" finalizer, then\\nthe owner cannot be deleted from the key-value store until this\\nreference is removed.\\nSee https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion\\nfor how the garbage collector interacts with this field and enforces the foreground deletion.\\nDefaults to false.\\nTo set this field, a user needs \\\"delete\\\" permission of the owner,\\notherwise 422 (Unprocessable Entity) will be returned.\",\n \"type\": \"boolean\"\n },\n \"controller\": {\n \"description\": \"If true, this reference points to the managing controller.\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of the referent.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n },\n \"uid\": {\n \"description\": \"UID of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"apiVersion\",\n \"kind\",\n \"name\",\n \"uid\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"group\",\n \"kind\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"aws\",\n \"kubernetes\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Adopted Resource\",\n \"type\": \"object\"\n}", + "version": "services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Adopted Resource", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/iam-controller/main/helm" + }, + "model": { + "category": { + "name": "Security \u0026 Compliance" + }, + "displayName": "AWS Identity and Access Management", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#DD344C", + "shape": "sheild", + "source_uri": "git://github.com/aws-controllers-k8s/iam-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Security-Identity-Compliance\" fill=\"#DD344C\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.3.12" + }, + "name": "aws-iam-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Security Identity Compliance", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#DD344C", + "shape": "shield", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Security-Identity-Compliance\" fill=\"#DD344C\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/FieldExport.json b/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/FieldExport.json new file mode 100644 index 00000000000..d39ad9163e4 --- /dev/null +++ b/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/FieldExport.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "FieldExport", + "schema": "{\n \"description\": \"FieldExport is the schema for the FieldExport API.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"FieldExportSpec defines the desired state of the FieldExport.\",\n \"properties\": {\n \"from\": {\n \"description\": \"ResourceFieldSelector provides the values necessary to identify an individual\\nfield on an individual K8s resource.\",\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"resource\": {\n \"description\": \"NamespacedResource provides all the values necessary to identify an ACK\\nresource of a given type (within the same namespace as the custom resource\\ncontaining this type).\",\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"group\",\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"path\",\n \"resource\"\n ],\n \"type\": \"object\"\n },\n \"to\": {\n \"description\": \"FieldExportTarget provides the values necessary to identify the\\noutput path for a field export.\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key overrides the default value (`\\u003cnamespace\\u003e.\\u003cFieldExport-resource-name\\u003e`) for the FieldExport target\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"FieldExportOutputType represents all types that can be produced by a field\\nexport operation\",\n \"enum\": [\n \"configmap\",\n \"secret\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is marked as optional, so we cannot compose `NamespacedName`\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"from\",\n \"to\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Field Export\",\n \"type\": \"object\"\n}", + "version": "services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Field Export", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/iam-controller/main/helm" + }, + "model": { + "category": { + "name": "Security \u0026 Compliance" + }, + "displayName": "AWS Identity and Access Management", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#DD344C", + "shape": "sheild", + "source_uri": "git://github.com/aws-controllers-k8s/iam-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Security-Identity-Compliance\" fill=\"#DD344C\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.3.12" + }, + "name": "aws-iam-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Security Identity Compliance", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#DD344C", + "shape": "shield", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Security-Identity-Compliance\" fill=\"#DD344C\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/Group.json b/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/Group.json new file mode 100644 index 00000000000..90cfccbf301 --- /dev/null +++ b/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/Group.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "Group", + "schema": "{\n \"description\": \"Group is the Schema for the Groups API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"GroupSpec defines the desired state of Group.\\n\\n\\nContains information about an IAM group entity.\\n\\n\\nThis data type is used as a response element in the following operations:\\n\\n\\n - CreateGroup\\n\\n\\n - GetGroup\\n\\n\\n - ListGroups\",\n \"properties\": {\n \"inlinePolicies\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The name of the group to create. Do not include the path in this value.\\n\\n\\nIAM user, group, role, and policy names must be unique within the account.\\nNames are not distinguished by case. For example, you cannot create resources\\nnamed both \\\"MyResource\\\" and \\\"myresource\\\".\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"The path to the group. For more information about paths, see IAM identifiers\\n(https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html)\\nin the IAM User Guide.\\n\\n\\nThis parameter is optional. If it is not included, it defaults to a slash\\n(/).\\n\\n\\nThis parameter allows (through its regex pattern (http://wikipedia.org/wiki/regex))\\na string of characters consisting of either a forward slash (/) by itself\\nor a string that must begin and end with forward slashes. In addition, it\\ncan contain any ASCII character from the ! (\\\\u0021) through the DEL character\\n(\\\\u007F), including most punctuation characters, digits, and upper and lowercased\\nletters.\",\n \"type\": \"string\"\n },\n \"policies\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"policyRefs\": {\n \"items\": {\n \"description\": \"AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\\ntype to provide more user friendly syntax for references using 'from' field\\nEx:\\nAPIIDRef:\\n\\n\\n\\tfrom:\\n\\t name: my-api\",\n \"properties\": {\n \"from\": {\n \"description\": \"AWSResourceReference provides all the values necessary to reference another\\nk8s resource for finding the identifier(Id/ARN/Name)\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Group\",\n \"type\": \"object\"\n}", + "version": "iam.services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Group", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/iam-controller/main/helm" + }, + "model": { + "category": { + "name": "Security \u0026 Compliance" + }, + "displayName": "AWS Identity and Access Management", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#DD344C", + "shape": "sheild", + "source_uri": "git://github.com/aws-controllers-k8s/iam-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Security-Identity-Compliance\" fill=\"#DD344C\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.3.12" + }, + "name": "aws-iam-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Security Identity Compliance", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#DD344C", + "shape": "shield", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Security-Identity-Compliance\" fill=\"#DD344C\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/InstanceProfile.json b/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/InstanceProfile.json new file mode 100644 index 00000000000..dcb1bfddcf0 --- /dev/null +++ b/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/InstanceProfile.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "InstanceProfile", + "schema": "{\n \"description\": \"InstanceProfile is the Schema for the InstanceProfiles API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"InstanceProfileSpec defines the desired state of InstanceProfile.\\n\\n\\nContains information about an instance profile.\\n\\n\\nThis data type is used as a response element in the following operations:\\n\\n\\n - CreateInstanceProfile\\n\\n\\n - GetInstanceProfile\\n\\n\\n - ListInstanceProfiles\\n\\n\\n - ListInstanceProfilesForRole\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the instance profile to create.\\n\\n\\nThis parameter allows (through its regex pattern (http://wikipedia.org/wiki/regex))\\na string of characters consisting of upper and lowercase alphanumeric characters\\nwith no spaces. You can also include any of the following characters: _+=,.@-\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"The path to the instance profile. For more information about paths, see IAM\\nIdentifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html)\\nin the IAM User Guide.\\n\\n\\nThis parameter is optional. If it is not included, it defaults to a slash\\n(/).\\n\\n\\nThis parameter allows (through its regex pattern (http://wikipedia.org/wiki/regex))\\na string of characters consisting of either a forward slash (/) by itself\\nor a string that must begin and end with forward slashes. In addition, it\\ncan contain any ASCII character from the ! (\\\\u0021) through the DEL character\\n(\\\\u007F), including most punctuation characters, digits, and upper and lowercased\\nletters.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"roleRef\": {\n \"description\": \"AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\\ntype to provide more user friendly syntax for references using 'from' field\\nEx:\\nAPIIDRef:\\n\\n\\n\\tfrom:\\n\\t name: my-api\",\n \"properties\": {\n \"from\": {\n \"description\": \"AWSResourceReference provides all the values necessary to reference another\\nk8s resource for finding the identifier(Id/ARN/Name)\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tags\": {\n \"description\": \"A list of tags that you want to attach to the newly created IAM instance\\nprofile. Each tag consists of a key name and an associated value. For more\\ninformation about tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)\\nin the IAM User Guide.\\n\\n\\nIf any one of the tags is invalid or if you exceed the allowed maximum number\\nof tags, then the entire request fails and the resource is not created.\",\n \"items\": {\n \"description\": \"A structure that represents user-provided metadata that can be associated\\nwith an IAM resource. For more information about tagging, see Tagging IAM\\nresources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)\\nin the IAM User Guide.\",\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Instance Profile\",\n \"type\": \"object\"\n}", + "version": "iam.services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Instance Profile", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/iam-controller/main/helm" + }, + "model": { + "category": { + "name": "Security \u0026 Compliance" + }, + "displayName": "AWS Identity and Access Management", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#DD344C", + "shape": "sheild", + "source_uri": "git://github.com/aws-controllers-k8s/iam-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Security-Identity-Compliance\" fill=\"#DD344C\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.3.12" + }, + "name": "aws-iam-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Security Identity Compliance", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#DD344C", + "shape": "shield", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Security-Identity-Compliance\" fill=\"#DD344C\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/OpenIDConnectProvider.json b/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/OpenIDConnectProvider.json new file mode 100644 index 00000000000..fb22dd2832d --- /dev/null +++ b/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/OpenIDConnectProvider.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "OpenIDConnectProvider", + "schema": "{\n \"description\": \"OpenIDConnectProvider is the Schema for the OpenIDConnectProviders API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"OpenIDConnectProviderSpec defines the desired state of OpenIDConnectProvider.\",\n \"properties\": {\n \"clientIDs\": {\n \"description\": \"Provides a list of client IDs, also known as audiences. When a mobile or\\nweb app registers with an OpenID Connect provider, they establish a value\\nthat identifies the application. This is the value that's sent as the client_id\\nparameter on OAuth requests.\\n\\n\\nYou can register multiple client IDs with the same provider. For example,\\nyou might have multiple applications that use the same OIDC provider. You\\ncannot register more than 100 client IDs with a single IAM OIDC provider.\\n\\n\\nThere is no defined format for a client ID. The CreateOpenIDConnectProviderRequest\\noperation accepts client IDs up to 255 characters long.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tags\": {\n \"description\": \"A list of tags that you want to attach to the new IAM OpenID Connect (OIDC)\\nprovider. Each tag consists of a key name and an associated value. For more\\ninformation about tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)\\nin the IAM User Guide.\\n\\n\\nIf any one of the tags is invalid or if you exceed the allowed maximum number\\nof tags, then the entire request fails and the resource is not created.\",\n \"items\": {\n \"description\": \"A structure that represents user-provided metadata that can be associated\\nwith an IAM resource. For more information about tagging, see Tagging IAM\\nresources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)\\nin the IAM User Guide.\",\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"thumbprints\": {\n \"description\": \"A list of server certificate thumbprints for the OpenID Connect (OIDC) identity\\nprovider's server certificates. Typically this list includes only one entry.\\nHowever, IAM lets you have up to five thumbprints for an OIDC provider. This\\nlets you maintain multiple thumbprints if the identity provider is rotating\\ncertificates.\\n\\n\\nThe server certificate thumbprint is the hex-encoded SHA-1 hash value of\\nthe X.509 certificate used by the domain where the OpenID Connect provider\\nmakes its keys available. It is always a 40-character string.\\n\\n\\nYou must provide at least one thumbprint when creating an IAM OIDC provider.\\nFor example, assume that the OIDC provider is server.example.com and the\\nprovider stores its keys at https://keys.server.example.com/openid-connect.\\nIn that case, the thumbprint string would be the hex-encoded SHA-1 hash value\\nof the certificate used by https://keys.server.example.com.\\n\\n\\nFor more information about obtaining the OIDC provider thumbprint, see Obtaining\\nthe thumbprint for an OpenID Connect provider (https://docs.aws.amazon.com/IAM/latest/UserGuide/identity-providers-oidc-obtain-thumbprint.html)\\nin the IAM user Guide.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"url\": {\n \"description\": \"The URL of the identity provider. The URL must begin with https:// and should\\ncorrespond to the iss claim in the provider's OpenID Connect ID tokens. Per\\nthe OIDC standard, path components are allowed but query parameters are not.\\nTypically the URL consists of only a hostname, like https://server.example.org\\nor https://example.com. The URL should not contain a port number.\\n\\n\\nYou cannot register the same provider multiple times in a single Amazon Web\\nServices account. If you try to submit a URL that has already been used for\\nan OpenID Connect provider in the Amazon Web Services account, you will get\\nan error.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"thumbprints\",\n \"url\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Open ID Connect Provider\",\n \"type\": \"object\"\n}", + "version": "iam.services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Open ID Connect Provider", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/iam-controller/main/helm" + }, + "model": { + "category": { + "name": "Security \u0026 Compliance" + }, + "displayName": "AWS Identity and Access Management", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#DD344C", + "shape": "sheild", + "source_uri": "git://github.com/aws-controllers-k8s/iam-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Security-Identity-Compliance\" fill=\"#DD344C\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.3.12" + }, + "name": "aws-iam-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Security Identity Compliance", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#DD344C", + "shape": "shield", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Security-Identity-Compliance\" fill=\"#DD344C\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/Policy.json b/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/Policy.json new file mode 100644 index 00000000000..496e209ee86 --- /dev/null +++ b/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/Policy.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "Policy", + "schema": "{\n \"description\": \"Policy is the Schema for the Policies API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"PolicySpec defines the desired state of Policy.\\n\\n\\nContains information about a managed policy.\\n\\n\\nThis data type is used as a response element in the CreatePolicy, GetPolicy,\\nand ListPolicies operations.\\n\\n\\nFor more information about managed policies, refer to Managed policies and\\ninline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html)\\nin the IAM User Guide.\",\n \"properties\": {\n \"description\": {\n \"description\": \"A friendly description of the policy.\\n\\n\\nTypically used to store information about the permissions defined in the\\npolicy. For example, \\\"Grants access to production DynamoDB tables.\\\"\\n\\n\\nThe policy description is immutable. After a value is assigned, it cannot\\nbe changed.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The friendly name of the policy.\\n\\n\\nIAM user, group, role, and policy names must be unique within the account.\\nNames are not distinguished by case. For example, you cannot create resources\\nnamed both \\\"MyResource\\\" and \\\"myresource\\\".\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"The path for the policy.\\n\\n\\nFor more information about paths, see IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html)\\nin the IAM User Guide.\\n\\n\\nThis parameter is optional. If it is not included, it defaults to a slash\\n(/).\\n\\n\\nThis parameter allows (through its regex pattern (http://wikipedia.org/wiki/regex))\\na string of characters consisting of either a forward slash (/) by itself\\nor a string that must begin and end with forward slashes. In addition, it\\ncan contain any ASCII character from the ! (\\\\u0021) through the DEL character\\n(\\\\u007F), including most punctuation characters, digits, and upper and lowercased\\nletters.\\n\\n\\nYou cannot use an asterisk (*) in the path name.\",\n \"type\": \"string\"\n },\n \"policyDocument\": {\n \"description\": \"The JSON policy document that you want to use as the content for the new\\npolicy.\\n\\n\\nYou must provide policies in JSON format in IAM. However, for CloudFormation\\ntemplates formatted in YAML, you can provide the policy in JSON or YAML format.\\nCloudFormation always converts a YAML policy to JSON format before submitting\\nit to IAM.\\n\\n\\nThe maximum length of the policy document that you can pass in this operation,\\nincluding whitespace, is listed below. To view the maximum character counts\\nof a managed policy with no whitespaces, see IAM and STS character quotas\\n(https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-entity-length).\\n\\n\\nTo learn more about JSON policy grammar, see Grammar of the IAM JSON policy\\nlanguage (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html)\\nin the IAM User Guide.\\n\\n\\nThe regex pattern (http://wikipedia.org/wiki/regex) used to validate this\\nparameter is a string of characters consisting of the following:\\n\\n\\n - Any printable ASCII character ranging from the space character (\\\\u0020)\\n through the end of the ASCII character range\\n\\n\\n - The printable characters in the Basic Latin and Latin-1 Supplement character\\n set (through \\\\u00FF)\\n\\n\\n - The special characters tab (\\\\u0009), line feed (\\\\u000A), and carriage\\n return (\\\\u000D)\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"A list of tags that you want to attach to the new IAM customer managed policy.\\nEach tag consists of a key name and an associated value. For more information\\nabout tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)\\nin the IAM User Guide.\\n\\n\\nIf any one of the tags is invalid or if you exceed the allowed maximum number\\nof tags, then the entire request fails and the resource is not created.\",\n \"items\": {\n \"description\": \"A structure that represents user-provided metadata that can be associated\\nwith an IAM resource. For more information about tagging, see Tagging IAM\\nresources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)\\nin the IAM User Guide.\",\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\",\n \"policyDocument\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Policy\",\n \"type\": \"object\"\n}", + "version": "iam.services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Policy", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/iam-controller/main/helm" + }, + "model": { + "category": { + "name": "Security \u0026 Compliance" + }, + "displayName": "AWS Identity and Access Management", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#DD344C", + "shape": "sheild", + "source_uri": "git://github.com/aws-controllers-k8s/iam-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Security-Identity-Compliance\" fill=\"#DD344C\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.3.12" + }, + "name": "aws-iam-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Security Identity Compliance", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#DD344C", + "shape": "shield", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Security-Identity-Compliance\" fill=\"#DD344C\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/Role.json b/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/Role.json new file mode 100644 index 00000000000..ee0c52b4231 --- /dev/null +++ b/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/Role.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "Role", + "schema": "{\n \"description\": \"Role is the Schema for the Roles API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"RoleSpec defines the desired state of Role.\\n\\n\\nContains information about an IAM role. This structure is returned as a response\\nelement in several API operations that interact with roles.\",\n \"properties\": {\n \"assumeRolePolicyDocument\": {\n \"description\": \"The trust relationship policy document that grants an entity permission to\\nassume the role.\\n\\n\\nIn IAM, you must provide a JSON policy that has been converted to a string.\\nHowever, for CloudFormation templates formatted in YAML, you can provide\\nthe policy in JSON or YAML format. CloudFormation always converts a YAML\\npolicy to JSON format before submitting it to IAM.\\n\\n\\nThe regex pattern (http://wikipedia.org/wiki/regex) used to validate this\\nparameter is a string of characters consisting of the following:\\n\\n\\n - Any printable ASCII character ranging from the space character (\\\\u0020)\\n through the end of the ASCII character range\\n\\n\\n - The printable characters in the Basic Latin and Latin-1 Supplement character\\n set (through \\\\u00FF)\\n\\n\\n - The special characters tab (\\\\u0009), line feed (\\\\u000A), and carriage\\n return (\\\\u000D)\\n\\n\\nUpon success, the response includes the same trust policy in JSON format.\",\n \"type\": \"string\"\n },\n \"description\": {\n \"description\": \"A description of the role.\",\n \"type\": \"string\"\n },\n \"inlinePolicies\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"maxSessionDuration\": {\n \"description\": \"The maximum session duration (in seconds) that you want to set for the specified\\nrole. If you do not specify a value for this setting, the default value of\\none hour is applied. This setting can have a value from 1 hour to 12 hours.\\n\\n\\nAnyone who assumes the role from the CLI or API can use the DurationSeconds\\nAPI parameter or the duration-seconds CLI parameter to request a longer session.\\nThe MaxSessionDuration setting determines the maximum duration that can be\\nrequested using the DurationSeconds parameter. If users don't specify a value\\nfor the DurationSeconds parameter, their security credentials are valid for\\none hour by default. This applies when you use the AssumeRole* API operations\\nor the assume-role* CLI operations but does not apply when you use those\\noperations to create a console URL. For more information, see Using IAM roles\\n(https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) in the\\nIAM User Guide.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"The name of the role to create.\\n\\n\\nIAM user, group, role, and policy names must be unique within the account.\\nNames are not distinguished by case. For example, you cannot create resources\\nnamed both \\\"MyResource\\\" and \\\"myresource\\\".\\n\\n\\nThis parameter allows (through its regex pattern (http://wikipedia.org/wiki/regex))\\na string of characters consisting of upper and lowercase alphanumeric characters\\nwith no spaces. You can also include any of the following characters: _+=,.@-\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"The path to the role. For more information about paths, see IAM Identifiers\\n(https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html)\\nin the IAM User Guide.\\n\\n\\nThis parameter is optional. If it is not included, it defaults to a slash\\n(/).\\n\\n\\nThis parameter allows (through its regex pattern (http://wikipedia.org/wiki/regex))\\na string of characters consisting of either a forward slash (/) by itself\\nor a string that must begin and end with forward slashes. In addition, it\\ncan contain any ASCII character from the ! (\\\\u0021) through the DEL character\\n(\\\\u007F), including most punctuation characters, digits, and upper and lowercased\\nletters.\",\n \"type\": \"string\"\n },\n \"permissionsBoundary\": {\n \"description\": \"The ARN of the managed policy that is used to set the permissions boundary\\nfor the role.\\n\\n\\nA permissions boundary policy defines the maximum permissions that identity-based\\npolicies can grant to an entity, but does not grant permissions. Permissions\\nboundaries do not define the maximum permissions that a resource-based policy\\ncan grant to an entity. To learn more, see Permissions boundaries for IAM\\nentities (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)\\nin the IAM User Guide.\\n\\n\\nFor more information about policy types, see Policy types (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policy-types)\\nin the IAM User Guide.\",\n \"type\": \"string\"\n },\n \"permissionsBoundaryRef\": {\n \"description\": \"AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\\ntype to provide more user friendly syntax for references using 'from' field\\nEx:\\nAPIIDRef:\\n\\n\\n\\tfrom:\\n\\t name: my-api\",\n \"properties\": {\n \"from\": {\n \"description\": \"AWSResourceReference provides all the values necessary to reference another\\nk8s resource for finding the identifier(Id/ARN/Name)\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"policies\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"policyRefs\": {\n \"items\": {\n \"description\": \"AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\\ntype to provide more user friendly syntax for references using 'from' field\\nEx:\\nAPIIDRef:\\n\\n\\n\\tfrom:\\n\\t name: my-api\",\n \"properties\": {\n \"from\": {\n \"description\": \"AWSResourceReference provides all the values necessary to reference another\\nk8s resource for finding the identifier(Id/ARN/Name)\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tags\": {\n \"description\": \"A list of tags that you want to attach to the new role. Each tag consists\\nof a key name and an associated value. For more information about tagging,\\nsee Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)\\nin the IAM User Guide.\\n\\n\\nIf any one of the tags is invalid or if you exceed the allowed maximum number\\nof tags, then the entire request fails and the resource is not created.\",\n \"items\": {\n \"description\": \"A structure that represents user-provided metadata that can be associated\\nwith an IAM resource. For more information about tagging, see Tagging IAM\\nresources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)\\nin the IAM User Guide.\",\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"assumeRolePolicyDocument\",\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Role\",\n \"type\": \"object\"\n}", + "version": "iam.services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Role", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/iam-controller/main/helm" + }, + "model": { + "category": { + "name": "Security \u0026 Compliance" + }, + "displayName": "AWS Identity and Access Management", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#DD344C", + "shape": "sheild", + "source_uri": "git://github.com/aws-controllers-k8s/iam-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Security-Identity-Compliance\" fill=\"#DD344C\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.3.12" + }, + "name": "aws-iam-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Security Identity Compliance", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#DD344C", + "shape": "shield", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Security-Identity-Compliance\" fill=\"#DD344C\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/User.json b/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/User.json new file mode 100644 index 00000000000..a54fb7f8657 --- /dev/null +++ b/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/components/User.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "User", + "schema": "{\n \"description\": \"User is the Schema for the Users API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"UserSpec defines the desired state of User.\\n\\n\\nContains information about an IAM user entity.\\n\\n\\nThis data type is used as a response element in the following operations:\\n\\n\\n - CreateUser\\n\\n\\n - GetUser\\n\\n\\n - ListUsers\",\n \"properties\": {\n \"inlinePolicies\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The name of the user to create.\\n\\n\\nIAM user, group, role, and policy names must be unique within the account.\\nNames are not distinguished by case. For example, you cannot create resources\\nnamed both \\\"MyResource\\\" and \\\"myresource\\\".\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"The path for the user name. For more information about paths, see IAM identifiers\\n(https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html)\\nin the IAM User Guide.\\n\\n\\nThis parameter is optional. If it is not included, it defaults to a slash\\n(/).\\n\\n\\nThis parameter allows (through its regex pattern (http://wikipedia.org/wiki/regex))\\na string of characters consisting of either a forward slash (/) by itself\\nor a string that must begin and end with forward slashes. In addition, it\\ncan contain any ASCII character from the ! (\\\\u0021) through the DEL character\\n(\\\\u007F), including most punctuation characters, digits, and upper and lowercased\\nletters.\",\n \"type\": \"string\"\n },\n \"permissionsBoundary\": {\n \"description\": \"The ARN of the managed policy that is used to set the permissions boundary\\nfor the user.\\n\\n\\nA permissions boundary policy defines the maximum permissions that identity-based\\npolicies can grant to an entity, but does not grant permissions. Permissions\\nboundaries do not define the maximum permissions that a resource-based policy\\ncan grant to an entity. To learn more, see Permissions boundaries for IAM\\nentities (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)\\nin the IAM User Guide.\\n\\n\\nFor more information about policy types, see Policy types (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policy-types)\\nin the IAM User Guide.\",\n \"type\": \"string\"\n },\n \"permissionsBoundaryRef\": {\n \"description\": \"AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\\ntype to provide more user friendly syntax for references using 'from' field\\nEx:\\nAPIIDRef:\\n\\n\\n\\tfrom:\\n\\t name: my-api\",\n \"properties\": {\n \"from\": {\n \"description\": \"AWSResourceReference provides all the values necessary to reference another\\nk8s resource for finding the identifier(Id/ARN/Name)\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"policies\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"policyRefs\": {\n \"items\": {\n \"description\": \"AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\\ntype to provide more user friendly syntax for references using 'from' field\\nEx:\\nAPIIDRef:\\n\\n\\n\\tfrom:\\n\\t name: my-api\",\n \"properties\": {\n \"from\": {\n \"description\": \"AWSResourceReference provides all the values necessary to reference another\\nk8s resource for finding the identifier(Id/ARN/Name)\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tags\": {\n \"description\": \"A list of tags that you want to attach to the new user. Each tag consists\\nof a key name and an associated value. For more information about tagging,\\nsee Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)\\nin the IAM User Guide.\\n\\n\\nIf any one of the tags is invalid or if you exceed the allowed maximum number\\nof tags, then the entire request fails and the resource is not created.\",\n \"items\": {\n \"description\": \"A structure that represents user-provided metadata that can be associated\\nwith an IAM resource. For more information about tagging, see Tagging IAM\\nresources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)\\nin the IAM User Guide.\",\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"User\",\n \"type\": \"object\"\n}", + "version": "iam.services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "User", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/iam-controller/main/helm" + }, + "model": { + "category": { + "name": "Security \u0026 Compliance" + }, + "displayName": "AWS Identity and Access Management", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#DD344C", + "shape": "sheild", + "source_uri": "git://github.com/aws-controllers-k8s/iam-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Security-Identity-Compliance\" fill=\"#DD344C\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.3.12" + }, + "name": "aws-iam-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Security Identity Compliance", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#DD344C", + "shape": "shield", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Security-Identity-Compliance\" fill=\"#DD344C\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/model.json b/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/model.json new file mode 100644 index 00000000000..c619dcc923f --- /dev/null +++ b/server/meshmodel/aws-iam-controller/v1.3.12/v1.0.0/model.json @@ -0,0 +1,41 @@ +{ + "category": { + "name": "Security \u0026 Compliance" + }, + "displayName": "AWS Identity and Access Management", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "capabilities": null, + "isAnnotation": false, + "primaryColor": "#DD344C", + "shape": "sheild", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Security-Identity-Compliance\" fill=\"#DD344C\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Identity-and-Access-Management_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7,30 L33,30 L33,11 L7,11 L7,30 Z M34,10.5 L34,30.5 C34,30.776 33.776,31 33.5,31 L6.5,31 C6.224,31 6,30.776 6,30.5 L6,10.5 C6,10.224 6.224,10 6.5,10 L33.5,10 C33.776,10 34,10.224 34,10.5 L34,10.5 Z M22,24 L30,24 L30,23 L22,23 L22,24 Z M28,21 L31,21 L31,20 L28,20 L28,21 Z M22,21 L26,21 L26,20 L22,20 L22,21 Z M15,23.5 C15,23.224 14.775,23 14.5,23 C14.225,23 14,23.224 14,23.5 C14,23.776 14.225,24 14.5,24 C14.775,24 15,23.776 15,23.5 L15,23.5 Z M16,23.5 C16,24.151 15.581,24.701 15,24.908 L15,26 L14,26 L14,24.908 C13.419,24.701 13,24.151 13,23.5 C13,22.673 13.673,22 14.5,22 C15.327,22 16,22.673 16,23.5 L16,23.5 Z M10,26.996 L18.997,27 L18.998,25 L17,25 L17,24 L18.998,24 L18.999,23 L17,23 L17,22 L18.999,22 L19,20.004 L10.003,20 L10,26.996 Z M11,19 L17.998,19.003 L17.998,15.577 C17.998,14.759 17.332,14.163 16.935,13.881 C16.248,13.393 15.338,13.101 14.5,13.101 L14.499,13.101 C12.734,13.101 11.002,14.326 11.001,15.575 L11,19 Z M9,27.496 L9.003,19.5 C9.003,19.367 9.056,19.24 9.149,19.146 C9.243,19.053 9.37,19 9.503,19 L10,19 L10.001,15.575 C10.002,13.586 12.376,12.101 14.499,12.101 L14.5,12.101 C15.553,12.101 16.651,12.453 17.514,13.065 C18.472,13.746 18.999,14.638 18.998,15.578 L18.998,19.004 L19.5,19.004 C19.776,19.004 20,19.228 20,19.504 L19.997,27.5 C19.997,27.633 19.944,27.76 19.851,27.854 C19.757,27.947 19.63,28 19.497,28 L9.5,27.996 C9.224,27.996 9,27.772 9,27.496 L9,27.496 Z M29,18 L31,18 L31,17 L29,17 L29,18 Z M22,18 L28,18 L28,17 L22,17 L22,18 Z\" id=\"AWS-Identity-and-Access-Management_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.3.12" + }, + "name": "aws-iam-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Security Identity Compliance", + "version": "v1.0.0", + "components": null, + "relationships": null + } \ No newline at end of file diff --git a/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/ACL.json b/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/ACL.json new file mode 100644 index 00000000000..ebd2d0f943b --- /dev/null +++ b/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/ACL.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "ACL", + "schema": "{\n \"description\": \"ACL is the Schema for the ACLS API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"ACLSpec defines the desired state of ACL.\\n\\n\\nAn Access Control List. You can authenticate users with Access Contol Lists.\\nACLs enable you to control cluster access by grouping users. These Access\\ncontrol lists are designed as a way to organize access to clusters.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the Access Control List.\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"A list of tags to be added to this resource. A tag is a key-value pair. A\\ntag key must be accompanied by a tag value, although null is accepted.\",\n \"items\": {\n \"description\": \"A tag that can be added to an MemoryDB resource. Tags are composed of a Key/Value\\npair. You can use tags to categorize and track all your MemoryDB resources.\\nWhen you add or remove tags on clusters, those actions will be replicated\\nto all nodes in the cluster. A tag with a null Value is permitted. For more\\ninformation, see Tagging your MemoryDB resources (https://docs.aws.amazon.com/MemoryDB/latest/devguide/tagging-resources.html)\",\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"userNames\": {\n \"description\": \"The list of users that belong to the Access Control List.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"userRefs\": {\n \"items\": {\n \"description\": \"AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\\ntype to provide more user friendly syntax for references using 'from' field\\nEx:\\nAPIIDRef:\\n\\n\\n\\tfrom:\\n\\t name: my-api\",\n \"properties\": {\n \"from\": {\n \"description\": \"AWSResourceReference provides all the values necessary to reference another\\nk8s resource for finding the identifier(Id/ARN/Name)\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"ACL\",\n \"type\": \"object\"\n}", + "version": "memorydb.services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "ACL", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/memorydb-controller/main/helm" + }, + "model": { + "category": { + "name": "Provisioning" + }, + "displayName": "AWS MemoryDB for Redis", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#C925D1", + "shape": "cylinder", + "source_uri": "git://github.com/aws-controllers-k8s/memorydb-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Database\" fill=\"#C925D1\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.0.5" + }, + "name": "aws-memorydb-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#C925D1", + "shape": "cylinder", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Database\" fill=\"#C925D1\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cg id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/AdoptedResource.json b/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/AdoptedResource.json new file mode 100644 index 00000000000..b84e904025d --- /dev/null +++ b/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/AdoptedResource.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "AdoptedResource", + "schema": "{\n \"description\": \"AdoptedResource is the schema for the AdoptedResource API.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"AdoptedResourceSpec defines the desired state of the AdoptedResource.\",\n \"properties\": {\n \"aws\": {\n \"description\": \"AWSIdentifiers provide all unique ways to reference an AWS resource.\",\n \"properties\": {\n \"additionalKeys\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"AdditionalKeys represents any additional arbitrary identifiers used when\\ndescribing the target resource.\",\n \"type\": \"object\"\n },\n \"arn\": {\n \"description\": \"ARN is the AWS Resource Name for the resource. It is a globally\\nunique identifier.\",\n \"type\": \"string\"\n },\n \"nameOrID\": {\n \"description\": \"NameOrId is a user-supplied string identifier for the resource. It may\\nor may not be globally unique, depending on the type of resource.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"kubernetes\": {\n \"description\": \"ResourceWithMetadata provides the values necessary to create a\\nKubernetes resource and override any of its metadata values.\",\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"ObjectMeta is metadata that all persisted resources must have, which includes all objects\\nusers must create.\\nIt is not possible to use `metav1.ObjectMeta` inside spec, as the controller-gen\\nautomatically converts this to an arbitrary string-string map.\\nhttps://github.com/kubernetes-sigs/controller-tools/issues/385\\n\\n\\nActive discussion about inclusion of this field in the spec is happening in this PR:\\nhttps://github.com/kubernetes-sigs/controller-tools/pull/395\\n\\n\\nUntil this is allowed, or if it never is, we will produce a subset of the object meta\\nthat contains only the fields which the user is allowed to modify in the metadata.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: http://kubernetes.io/docs/user-guide/annotations\",\n \"type\": \"object\"\n },\n \"generateName\": {\n \"description\": \"GenerateName is an optional prefix, used by the server, to generate a unique\\nname ONLY IF the Name field has not been provided.\\nIf this field is used, the name returned to the client will be different\\nthan the name passed. This value will also be combined with a unique suffix.\\nThe provided value has the same validation rules as the Name field,\\nand may be truncated by the length of the suffix required to make the value\\nunique on the server.\\n\\n\\nIf this field is specified and the generated name exists, the server will\\nNOT return a 409 - instead, it will either return 201 Created or 500 with Reason\\nServerTimeout indicating a unique name could not be found in the time allotted, and the client\\nshould retry (optionally after the time indicated in the Retry-After header).\\n\\n\\nApplied only if Name is not specified.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: http://kubernetes.io/docs/user-guide/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: http://kubernetes.io/docs/user-guide/identifiers#names\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace defines the space within each name must be unique. An empty namespace is\\nequivalent to the \\\"default\\\" namespace, but \\\"default\\\" is the canonical representation.\\nNot all objects are required to be scoped to a namespace - the value of this field for\\nthose objects will be empty.\\n\\n\\nMust be a DNS_LABEL.\\nCannot be updated.\\nMore info: http://kubernetes.io/docs/user-guide/namespaces\",\n \"type\": \"string\"\n },\n \"ownerReferences\": {\n \"description\": \"List of objects depended by this object. If ALL objects in the list have\\nbeen deleted, this object will be garbage collected. If this object is managed by a controller,\\nthen an entry in this list will point to this controller, with the controller field set to true.\\nThere cannot be more than one managing controller.\",\n \"items\": {\n \"description\": \"OwnerReference contains enough information to let you identify an owning\\nobject. An owning object must be in the same namespace as the dependent, or\\nbe cluster-scoped, so there is no namespace field.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"API version of the referent.\",\n \"type\": \"string\"\n },\n \"blockOwnerDeletion\": {\n \"description\": \"If true, AND if the owner has the \\\"foregroundDeletion\\\" finalizer, then\\nthe owner cannot be deleted from the key-value store until this\\nreference is removed.\\nSee https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion\\nfor how the garbage collector interacts with this field and enforces the foreground deletion.\\nDefaults to false.\\nTo set this field, a user needs \\\"delete\\\" permission of the owner,\\notherwise 422 (Unprocessable Entity) will be returned.\",\n \"type\": \"boolean\"\n },\n \"controller\": {\n \"description\": \"If true, this reference points to the managing controller.\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of the referent.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n },\n \"uid\": {\n \"description\": \"UID of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"apiVersion\",\n \"kind\",\n \"name\",\n \"uid\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"group\",\n \"kind\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"aws\",\n \"kubernetes\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Adopted Resource\",\n \"type\": \"object\"\n}", + "version": "services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Adopted Resource", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/memorydb-controller/main/helm" + }, + "model": { + "category": { + "name": "Provisioning" + }, + "displayName": "AWS MemoryDB for Redis", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#C925D1", + "shape": "cylinder", + "source_uri": "git://github.com/aws-controllers-k8s/memorydb-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Database\" fill=\"#C925D1\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.0.5" + }, + "name": "aws-memorydb-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#C925D1", + "shape": "cylinder", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Database\" fill=\"#C925D1\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cg id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/Cluster.json b/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/Cluster.json new file mode 100644 index 00000000000..a827d7ca331 --- /dev/null +++ b/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/Cluster.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "Cluster", + "schema": "{\n \"description\": \"Cluster is the Schema for the Clusters API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"ClusterSpec defines the desired state of Cluster.\\n\\n\\nContains all of the attributes of a specific cluster.\",\n \"properties\": {\n \"aclName\": {\n \"description\": \"The name of the Access Control List to associate with the cluster.\",\n \"type\": \"string\"\n },\n \"aclRef\": {\n \"description\": \"AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\\ntype to provide more user friendly syntax for references using 'from' field\\nEx:\\nAPIIDRef:\\n\\n\\n\\tfrom:\\n\\t name: my-api\",\n \"properties\": {\n \"from\": {\n \"description\": \"AWSResourceReference provides all the values necessary to reference another\\nk8s resource for finding the identifier(Id/ARN/Name)\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"autoMinorVersionUpgrade\": {\n \"description\": \"When set to true, the cluster will automatically receive minor engine version\\nupgrades after launch.\",\n \"type\": \"boolean\"\n },\n \"description\": {\n \"description\": \"An optional description of the cluster.\",\n \"type\": \"string\"\n },\n \"engineVersion\": {\n \"description\": \"The version number of the Redis engine to be used for the cluster.\",\n \"type\": \"string\"\n },\n \"kmsKeyID\": {\n \"description\": \"The ID of the KMS key used to encrypt the cluster.\",\n \"type\": \"string\"\n },\n \"maintenanceWindow\": {\n \"description\": \"Specifies the weekly time range during which maintenance on the cluster is\\nperformed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi\\n(24H Clock UTC). The minimum maintenance window is a 60 minute period.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the cluster. This value must be unique as it also serves as the\\ncluster identifier.\",\n \"type\": \"string\"\n },\n \"nodeType\": {\n \"description\": \"The compute and memory capacity of the nodes in the cluster.\",\n \"type\": \"string\"\n },\n \"numReplicasPerShard\": {\n \"description\": \"The number of replicas to apply to each shard. The default value is 1. The\\nmaximum is 5.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"numShards\": {\n \"description\": \"The number of shards the cluster will contain. The default value is 1.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"parameterGroupName\": {\n \"description\": \"The name of the parameter group associated with the cluster.\",\n \"type\": \"string\"\n },\n \"parameterGroupRef\": {\n \"description\": \"AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\\ntype to provide more user friendly syntax for references using 'from' field\\nEx:\\nAPIIDRef:\\n\\n\\n\\tfrom:\\n\\t name: my-api\",\n \"properties\": {\n \"from\": {\n \"description\": \"AWSResourceReference provides all the values necessary to reference another\\nk8s resource for finding the identifier(Id/ARN/Name)\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"port\": {\n \"description\": \"The port number on which each of the nodes accepts connections.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"securityGroupIDs\": {\n \"description\": \"A list of security group names to associate with this cluster.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"securityGroupRefs\": {\n \"items\": {\n \"description\": \"AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\\ntype to provide more user friendly syntax for references using 'from' field\\nEx:\\nAPIIDRef:\\n\\n\\n\\tfrom:\\n\\t name: my-api\",\n \"properties\": {\n \"from\": {\n \"description\": \"AWSResourceReference provides all the values necessary to reference another\\nk8s resource for finding the identifier(Id/ARN/Name)\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"snapshotARNs\": {\n \"description\": \"A list of Amazon Resource Names (ARN) that uniquely identify the RDB snapshot\\nfiles stored in Amazon S3. The snapshot files are used to populate the new\\ncluster. The Amazon S3 object name in the ARN cannot contain any commas.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"snapshotName\": {\n \"description\": \"The name of a snapshot from which to restore data into the new cluster. The\\nsnapshot status changes to restoring while the new cluster is being created.\",\n \"type\": \"string\"\n },\n \"snapshotRef\": {\n \"description\": \"AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\\ntype to provide more user friendly syntax for references using 'from' field\\nEx:\\nAPIIDRef:\\n\\n\\n\\tfrom:\\n\\t name: my-api\",\n \"properties\": {\n \"from\": {\n \"description\": \"AWSResourceReference provides all the values necessary to reference another\\nk8s resource for finding the identifier(Id/ARN/Name)\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"snapshotRetentionLimit\": {\n \"description\": \"The number of days for which MemoryDB retains automatic snapshots before\\ndeleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot\\nthat was taken today is retained for 5 days before being deleted.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"snapshotWindow\": {\n \"description\": \"The daily time range (in UTC) during which MemoryDB begins taking a daily\\nsnapshot of your shard.\\n\\n\\nExample: 05:00-09:00\\n\\n\\nIf you do not specify this parameter, MemoryDB automatically chooses an appropriate\\ntime range.\",\n \"type\": \"string\"\n },\n \"snsTopicARN\": {\n \"description\": \"The Amazon Resource Name (ARN) of the Amazon Simple Notification Service\\n(SNS) topic to which notifications are sent.\",\n \"type\": \"string\"\n },\n \"snsTopicRef\": {\n \"description\": \"AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\\ntype to provide more user friendly syntax for references using 'from' field\\nEx:\\nAPIIDRef:\\n\\n\\n\\tfrom:\\n\\t name: my-api\",\n \"properties\": {\n \"from\": {\n \"description\": \"AWSResourceReference provides all the values necessary to reference another\\nk8s resource for finding the identifier(Id/ARN/Name)\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"subnetGroupName\": {\n \"description\": \"The name of the subnet group to be used for the cluster.\",\n \"type\": \"string\"\n },\n \"subnetGroupRef\": {\n \"description\": \"AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\\ntype to provide more user friendly syntax for references using 'from' field\\nEx:\\nAPIIDRef:\\n\\n\\n\\tfrom:\\n\\t name: my-api\",\n \"properties\": {\n \"from\": {\n \"description\": \"AWSResourceReference provides all the values necessary to reference another\\nk8s resource for finding the identifier(Id/ARN/Name)\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tags\": {\n \"description\": \"A list of tags to be added to this resource. Tags are comma-separated key,value\\npairs (e.g. Key=myKey, Value=myKeyValue. You can include multiple tags as\\nshown following: Key=myKey, Value=myKeyValue Key=mySecondKey, Value=mySecondKeyValue.\",\n \"items\": {\n \"description\": \"A tag that can be added to an MemoryDB resource. Tags are composed of a Key/Value\\npair. You can use tags to categorize and track all your MemoryDB resources.\\nWhen you add or remove tags on clusters, those actions will be replicated\\nto all nodes in the cluster. A tag with a null Value is permitted. For more\\ninformation, see Tagging your MemoryDB resources (https://docs.aws.amazon.com/MemoryDB/latest/devguide/tagging-resources.html)\",\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tlsEnabled\": {\n \"description\": \"A flag to enable in-transit encryption on the cluster.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"name\",\n \"nodeType\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Cluster\",\n \"type\": \"object\"\n}", + "version": "memorydb.services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Cluster", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/memorydb-controller/main/helm" + }, + "model": { + "category": { + "name": "Provisioning" + }, + "displayName": "AWS MemoryDB for Redis", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#C925D1", + "shape": "cylinder", + "source_uri": "git://github.com/aws-controllers-k8s/memorydb-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Database\" fill=\"#C925D1\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.0.5" + }, + "name": "aws-memorydb-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#C925D1", + "shape": "cylinder", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Database\" fill=\"#C925D1\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cg id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/FieldExport.json b/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/FieldExport.json new file mode 100644 index 00000000000..1e42991c62b --- /dev/null +++ b/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/FieldExport.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "FieldExport", + "schema": "{\n \"description\": \"FieldExport is the schema for the FieldExport API.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"FieldExportSpec defines the desired state of the FieldExport.\",\n \"properties\": {\n \"from\": {\n \"description\": \"ResourceFieldSelector provides the values necessary to identify an individual\\nfield on an individual K8s resource.\",\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"resource\": {\n \"description\": \"NamespacedResource provides all the values necessary to identify an ACK\\nresource of a given type (within the same namespace as the custom resource\\ncontaining this type).\",\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"group\",\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"path\",\n \"resource\"\n ],\n \"type\": \"object\"\n },\n \"to\": {\n \"description\": \"FieldExportTarget provides the values necessary to identify the\\noutput path for a field export.\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key overrides the default value (`\\u003cnamespace\\u003e.\\u003cFieldExport-resource-name\\u003e`) for the FieldExport target\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"FieldExportOutputType represents all types that can be produced by a field\\nexport operation\",\n \"enum\": [\n \"configmap\",\n \"secret\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is marked as optional, so we cannot compose `NamespacedName`\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"from\",\n \"to\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Field Export\",\n \"type\": \"object\"\n}", + "version": "services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Field Export", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/memorydb-controller/main/helm" + }, + "model": { + "category": { + "name": "Provisioning" + }, + "displayName": "AWS MemoryDB for Redis", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#C925D1", + "shape": "cylinder", + "source_uri": "git://github.com/aws-controllers-k8s/memorydb-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Database\" fill=\"#C925D1\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.0.5" + }, + "name": "aws-memorydb-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#C925D1", + "shape": "cylinder", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Database\" fill=\"#C925D1\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cg id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/ParameterGroup.json b/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/ParameterGroup.json new file mode 100644 index 00000000000..be112678362 --- /dev/null +++ b/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/ParameterGroup.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "ParameterGroup", + "schema": "{\n \"description\": \"ParameterGroup is the Schema for the ParameterGroups API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"ParameterGroupSpec defines the desired state of ParameterGroup.\\n\\n\\nRepresents the output of a CreateParameterGroup operation. A parameter group\\nrepresents a combination of specific values for the parameters that are passed\\nto the engine software during startup.\",\n \"properties\": {\n \"description\": {\n \"description\": \"An optional description of the parameter group.\",\n \"type\": \"string\"\n },\n \"family\": {\n \"description\": \"The name of the parameter group family that the parameter group can be used\\nwith.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the parameter group.\",\n \"type\": \"string\"\n },\n \"parameterNameValues\": {\n \"description\": \"An array of parameter names and values for the parameter update. You must\\nsupply at least one parameter name and value; subsequent arguments are optional.\\nA maximum of 20 parameters may be updated per request.\",\n \"items\": {\n \"description\": \"Describes a name-value pair that is used to update the value of a parameter.\",\n \"properties\": {\n \"parameterName\": {\n \"type\": \"string\"\n },\n \"parameterValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tags\": {\n \"description\": \"A list of tags to be added to this resource. A tag is a key-value pair. A\\ntag key must be accompanied by a tag value, although null is accepted.\",\n \"items\": {\n \"description\": \"A tag that can be added to an MemoryDB resource. Tags are composed of a Key/Value\\npair. You can use tags to categorize and track all your MemoryDB resources.\\nWhen you add or remove tags on clusters, those actions will be replicated\\nto all nodes in the cluster. A tag with a null Value is permitted. For more\\ninformation, see Tagging your MemoryDB resources (https://docs.aws.amazon.com/MemoryDB/latest/devguide/tagging-resources.html)\",\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"family\",\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Parameter Group\",\n \"type\": \"object\"\n}", + "version": "memorydb.services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Parameter Group", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/memorydb-controller/main/helm" + }, + "model": { + "category": { + "name": "Provisioning" + }, + "displayName": "AWS MemoryDB for Redis", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#C925D1", + "shape": "cylinder", + "source_uri": "git://github.com/aws-controllers-k8s/memorydb-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Database\" fill=\"#C925D1\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.0.5" + }, + "name": "aws-memorydb-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#C925D1", + "shape": "cylinder", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Database\" fill=\"#C925D1\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cg id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/Snapshot.json b/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/Snapshot.json new file mode 100644 index 00000000000..be8f26d88ca --- /dev/null +++ b/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/Snapshot.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "Snapshot", + "schema": "{\n \"description\": \"Snapshot is the Schema for the Snapshots API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"SnapshotSpec defines the desired state of Snapshot.\\n\\n\\nRepresents a copy of an entire cluster as of the time when the snapshot was\\ntaken.\",\n \"properties\": {\n \"clusterName\": {\n \"description\": \"The snapshot is created from this cluster.\",\n \"type\": \"string\"\n },\n \"clusterRef\": {\n \"description\": \"AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\\ntype to provide more user friendly syntax for references using 'from' field\\nEx:\\nAPIIDRef:\\n\\n\\n\\tfrom:\\n\\t name: my-api\",\n \"properties\": {\n \"from\": {\n \"description\": \"AWSResourceReference provides all the values necessary to reference another\\nk8s resource for finding the identifier(Id/ARN/Name)\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"kmsKeyID\": {\n \"description\": \"The ID of the KMS key used to encrypt the snapshot.\",\n \"type\": \"string\"\n },\n \"kmsKeyRef\": {\n \"description\": \"AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\\ntype to provide more user friendly syntax for references using 'from' field\\nEx:\\nAPIIDRef:\\n\\n\\n\\tfrom:\\n\\t name: my-api\",\n \"properties\": {\n \"from\": {\n \"description\": \"AWSResourceReference provides all the values necessary to reference another\\nk8s resource for finding the identifier(Id/ARN/Name)\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"A name for the snapshot being created.\",\n \"type\": \"string\"\n },\n \"sourceSnapshotName\": {\n \"description\": \"The name of an existing snapshot from which to make a copy.\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"A list of tags to be added to this resource. A tag is a key-value pair. A\\ntag key must be accompanied by a tag value, although null is accepted.\",\n \"items\": {\n \"description\": \"A tag that can be added to an MemoryDB resource. Tags are composed of a Key/Value\\npair. You can use tags to categorize and track all your MemoryDB resources.\\nWhen you add or remove tags on clusters, those actions will be replicated\\nto all nodes in the cluster. A tag with a null Value is permitted. For more\\ninformation, see Tagging your MemoryDB resources (https://docs.aws.amazon.com/MemoryDB/latest/devguide/tagging-resources.html)\",\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Snapshot\",\n \"type\": \"object\"\n}", + "version": "memorydb.services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Snapshot", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/memorydb-controller/main/helm" + }, + "model": { + "category": { + "name": "Provisioning" + }, + "displayName": "AWS MemoryDB for Redis", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#C925D1", + "shape": "cylinder", + "source_uri": "git://github.com/aws-controllers-k8s/memorydb-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Database\" fill=\"#C925D1\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.0.5" + }, + "name": "aws-memorydb-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#C925D1", + "shape": "cylinder", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Database\" fill=\"#C925D1\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cg id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/SubnetGroup.json b/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/SubnetGroup.json new file mode 100644 index 00000000000..6d9f48adc8d --- /dev/null +++ b/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/SubnetGroup.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "SubnetGroup", + "schema": "{\n \"description\": \"SubnetGroup is the Schema for the SubnetGroups API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"SubnetGroupSpec defines the desired state of SubnetGroup.\\n\\n\\nRepresents the output of one of the following operations:\\n\\n\\n - CreateSubnetGroup\\n\\n\\n - UpdateSubnetGroup\\n\\n\\nA subnet group is a collection of subnets (typically private) that you can\\ndesignate for your clusters running in an Amazon Virtual Private Cloud (VPC)\\nenvironment.\",\n \"properties\": {\n \"description\": {\n \"description\": \"A description for the subnet group.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the subnet group.\",\n \"type\": \"string\"\n },\n \"subnetIDs\": {\n \"description\": \"A list of VPC subnet IDs for the subnet group.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"subnetRefs\": {\n \"items\": {\n \"description\": \"AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\\ntype to provide more user friendly syntax for references using 'from' field\\nEx:\\nAPIIDRef:\\n\\n\\n\\tfrom:\\n\\t name: my-api\",\n \"properties\": {\n \"from\": {\n \"description\": \"AWSResourceReference provides all the values necessary to reference another\\nk8s resource for finding the identifier(Id/ARN/Name)\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tags\": {\n \"description\": \"A list of tags to be added to this resource. A tag is a key-value pair. A\\ntag key must be accompanied by a tag value, although null is accepted.\",\n \"items\": {\n \"description\": \"A tag that can be added to an MemoryDB resource. Tags are composed of a Key/Value\\npair. You can use tags to categorize and track all your MemoryDB resources.\\nWhen you add or remove tags on clusters, those actions will be replicated\\nto all nodes in the cluster. A tag with a null Value is permitted. For more\\ninformation, see Tagging your MemoryDB resources (https://docs.aws.amazon.com/MemoryDB/latest/devguide/tagging-resources.html)\",\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Subnet Group\",\n \"type\": \"object\"\n}", + "version": "memorydb.services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Subnet Group", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/memorydb-controller/main/helm" + }, + "model": { + "category": { + "name": "Provisioning" + }, + "displayName": "AWS MemoryDB for Redis", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#C925D1", + "shape": "cylinder", + "source_uri": "git://github.com/aws-controllers-k8s/memorydb-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Database\" fill=\"#C925D1\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.0.5" + }, + "name": "aws-memorydb-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#C925D1", + "shape": "cylinder", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Database\" fill=\"#C925D1\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cg id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/User.json b/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/User.json new file mode 100644 index 00000000000..fb973738baf --- /dev/null +++ b/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/components/User.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "User", + "schema": "{\n \"description\": \"User is the Schema for the Users API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"UserSpec defines the desired state of User.\\n\\n\\nYou create users and assign them specific permissions by using an access\\nstring. You assign the users to Access Control Lists aligned with a specific\\nrole (administrators, human resources) that are then deployed to one or more\\nMemoryDB clusters.\",\n \"properties\": {\n \"accessString\": {\n \"description\": \"Access permissions string used for this user.\",\n \"type\": \"string\"\n },\n \"authenticationMode\": {\n \"description\": \"Denotes the user's authentication properties, such as whether it requires\\na password to authenticate.\",\n \"properties\": {\n \"passwords\": {\n \"items\": {\n \"description\": \"SecretKeyReference combines a k8s corev1.SecretReference with a\\nspecific key within the referred-to Secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key is the key within the secret\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name is unique within a namespace to reference a secret resource.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"namespace defines the space within which the secret name must be unique.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"type_\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The name of the user. This value must be unique as it also serves as the\\nuser identifier.\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"A list of tags to be added to this resource. A tag is a key-value pair. A\\ntag key must be accompanied by a tag value, although null is accepted.\",\n \"items\": {\n \"description\": \"A tag that can be added to an MemoryDB resource. Tags are composed of a Key/Value\\npair. You can use tags to categorize and track all your MemoryDB resources.\\nWhen you add or remove tags on clusters, those actions will be replicated\\nto all nodes in the cluster. A tag with a null Value is permitted. For more\\ninformation, see Tagging your MemoryDB resources (https://docs.aws.amazon.com/MemoryDB/latest/devguide/tagging-resources.html)\",\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"accessString\",\n \"authenticationMode\",\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"User\",\n \"type\": \"object\"\n}", + "version": "memorydb.services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "User", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/memorydb-controller/main/helm" + }, + "model": { + "category": { + "name": "Provisioning" + }, + "displayName": "AWS MemoryDB for Redis", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#C925D1", + "shape": "cylinder", + "source_uri": "git://github.com/aws-controllers-k8s/memorydb-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Database\" fill=\"#C925D1\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.0.5" + }, + "name": "aws-memorydb-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#C925D1", + "shape": "cylinder", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Database\" fill=\"#C925D1\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cg id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/model.json b/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/model.json new file mode 100644 index 00000000000..b0a9b945b82 --- /dev/null +++ b/server/meshmodel/aws-memorydb-controller/v1.0.5/v1.0.0/model.json @@ -0,0 +1,41 @@ +{ + "category": { + "name": "Provisioning" + }, + "displayName": "AWS MemoryDB for Redis", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "capabilities": null, + "isAnnotation": false, + "primaryColor": "#C925D1", + "shape": "cylinder", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Database\" fill=\"#C925D1\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MemoryDB-for-Redis_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Service/32/Amazon-MemoryDB-for-Redis_32\" transform=\"translate(6.000000, 7.000000)\" fill=\"#FFFFFF\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.26,6.09 C4.393,6.09 1,4.749 1,3.545 C1,2.341 4.393,1 9.26,1 C14.077,1 17.06,2.321 17.06,3.545 C17.06,4.769 14.077,6.09 9.26,6.09 L9.26,6.09 Z M16.943,13.591 C17.892,13.591 18.838,13.697 19.755,13.906 L19.978,12.931 C19.33,12.783 18.667,12.701 18,12.65 L18,3.991 C18.036,3.846 18.06,3.698 18.06,3.545 C18.06,1.425 14.524,0 9.26,0 C4.658,0 0,1.218 0,3.545 L0,23.163 C0,24.577 1.534,25.718 4.321,26.377 L4.551,25.403 C2.361,24.886 1,24.027 1,23.163 L1,19.024 C1.649,19.439 2.477,19.804 3.499,20.088 L3.767,19.124 C2.498,18.771 1.544,18.294 1,17.771 L1,12.018 C2.589,13.055 5.351,13.754 8.627,13.89 L8.668,12.891 C5.12,12.744 2.161,11.91 1,10.757 L1,5.232 C2.612,6.455 5.946,7.09 9.26,7.09 C12.816,7.09 15.579,6.438 17,5.362 L17,12.594 C16.981,12.594 16.962,12.591 16.943,12.591 C11.874,12.591 7.247,15.382 4.867,19.874 L5.75,20.341 C7.956,16.178 12.245,13.591 16.943,13.591 L16.943,13.591 Z M23.411,15.372 C22.613,14.896 21.761,14.507 20.879,14.218 L21.192,13.268 C22.143,13.58 23.062,13.999 23.923,14.513 L23.411,15.372 Z M18.614,26.074 C18.549,25.468 18.317,24.917 17.956,24.464 L23.416,19.301 C25.23,21.021 26.358,23.503 26.488,26.074 L18.614,26.074 Z M15.505,24.263 C16.573,24.263 17.453,25.051 17.614,26.074 L13.396,26.074 C13.557,25.051 14.437,24.263 15.505,24.263 L15.505,24.263 Z M24.141,18.616 L26.023,16.837 L25.335,16.111 L17.223,23.78 C16.729,23.456 16.139,23.263 15.505,23.263 C13.886,23.263 12.565,24.499 12.396,26.074 L6.901,26.074 C7.157,20.818 11.452,16.622 16.695,16.622 C18.105,16.622 19.466,16.915 20.739,17.492 L21.153,16.581 C19.748,15.944 18.248,15.622 16.695,15.622 C10.736,15.622 5.888,20.535 5.888,26.574 L5.888,27.074 L27.5,27.074 L27.5,26.574 C27.5,23.576 26.244,20.632 24.141,18.616 L24.141,18.616 Z\" id=\"Fill-6\"\u003e\u003c/path\u003e \u003c/g\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.0.5" + }, + "name": "aws-memorydb-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + } \ No newline at end of file diff --git a/server/meshmodel/aws-mq-controller/v0.0.36/v1.0.0/components/AdoptedResource.json b/server/meshmodel/aws-mq-controller/v0.0.36/v1.0.0/components/AdoptedResource.json new file mode 100644 index 00000000000..88925a2b661 --- /dev/null +++ b/server/meshmodel/aws-mq-controller/v0.0.36/v1.0.0/components/AdoptedResource.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "AdoptedResource", + "schema": "{\n \"description\": \"AdoptedResource is the schema for the AdoptedResource API.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"AdoptedResourceSpec defines the desired state of the AdoptedResource.\",\n \"properties\": {\n \"aws\": {\n \"description\": \"AWSIdentifiers provide all unique ways to reference an AWS resource.\",\n \"properties\": {\n \"additionalKeys\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"AdditionalKeys represents any additional arbitrary identifiers used when\\ndescribing the target resource.\",\n \"type\": \"object\"\n },\n \"arn\": {\n \"description\": \"ARN is the AWS Resource Name for the resource. It is a globally\\nunique identifier.\",\n \"type\": \"string\"\n },\n \"nameOrID\": {\n \"description\": \"NameOrId is a user-supplied string identifier for the resource. It may\\nor may not be globally unique, depending on the type of resource.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"kubernetes\": {\n \"description\": \"ResourceWithMetadata provides the values necessary to create a\\nKubernetes resource and override any of its metadata values.\",\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"ObjectMeta is metadata that all persisted resources must have, which includes all objects\\nusers must create.\\nIt is not possible to use `metav1.ObjectMeta` inside spec, as the controller-gen\\nautomatically converts this to an arbitrary string-string map.\\nhttps://github.com/kubernetes-sigs/controller-tools/issues/385\\n\\n\\nActive discussion about inclusion of this field in the spec is happening in this PR:\\nhttps://github.com/kubernetes-sigs/controller-tools/pull/395\\n\\n\\nUntil this is allowed, or if it never is, we will produce a subset of the object meta\\nthat contains only the fields which the user is allowed to modify in the metadata.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: http://kubernetes.io/docs/user-guide/annotations\",\n \"type\": \"object\"\n },\n \"generateName\": {\n \"description\": \"GenerateName is an optional prefix, used by the server, to generate a unique\\nname ONLY IF the Name field has not been provided.\\nIf this field is used, the name returned to the client will be different\\nthan the name passed. This value will also be combined with a unique suffix.\\nThe provided value has the same validation rules as the Name field,\\nand may be truncated by the length of the suffix required to make the value\\nunique on the server.\\n\\n\\nIf this field is specified and the generated name exists, the server will\\nNOT return a 409 - instead, it will either return 201 Created or 500 with Reason\\nServerTimeout indicating a unique name could not be found in the time allotted, and the client\\nshould retry (optionally after the time indicated in the Retry-After header).\\n\\n\\nApplied only if Name is not specified.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: http://kubernetes.io/docs/user-guide/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: http://kubernetes.io/docs/user-guide/identifiers#names\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace defines the space within each name must be unique. An empty namespace is\\nequivalent to the \\\"default\\\" namespace, but \\\"default\\\" is the canonical representation.\\nNot all objects are required to be scoped to a namespace - the value of this field for\\nthose objects will be empty.\\n\\n\\nMust be a DNS_LABEL.\\nCannot be updated.\\nMore info: http://kubernetes.io/docs/user-guide/namespaces\",\n \"type\": \"string\"\n },\n \"ownerReferences\": {\n \"description\": \"List of objects depended by this object. If ALL objects in the list have\\nbeen deleted, this object will be garbage collected. If this object is managed by a controller,\\nthen an entry in this list will point to this controller, with the controller field set to true.\\nThere cannot be more than one managing controller.\",\n \"items\": {\n \"description\": \"OwnerReference contains enough information to let you identify an owning\\nobject. An owning object must be in the same namespace as the dependent, or\\nbe cluster-scoped, so there is no namespace field.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"API version of the referent.\",\n \"type\": \"string\"\n },\n \"blockOwnerDeletion\": {\n \"description\": \"If true, AND if the owner has the \\\"foregroundDeletion\\\" finalizer, then\\nthe owner cannot be deleted from the key-value store until this\\nreference is removed.\\nSee https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion\\nfor how the garbage collector interacts with this field and enforces the foreground deletion.\\nDefaults to false.\\nTo set this field, a user needs \\\"delete\\\" permission of the owner,\\notherwise 422 (Unprocessable Entity) will be returned.\",\n \"type\": \"boolean\"\n },\n \"controller\": {\n \"description\": \"If true, this reference points to the managing controller.\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of the referent.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n },\n \"uid\": {\n \"description\": \"UID of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"apiVersion\",\n \"kind\",\n \"name\",\n \"uid\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"group\",\n \"kind\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"aws\",\n \"kubernetes\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Adopted Resource\",\n \"type\": \"object\"\n}", + "version": "services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Adopted Resource", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/mq-controller/main/helm" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "AWS MQ", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#E7157B", + "shape": "rectangle", + "source_uri": "git://github.com/aws-controllers-k8s/mq-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MQ_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.726,25.2816449 L8.863,25.7860948 C8.458,25.0972117 8.119,24.3664572 7.854,23.6127732 L8.797,23.2827873 C9.041,23.9756581 9.354,24.6485903 9.726,25.2816449 L9.726,25.2816449 Z M8.824,16.6372086 L7.882,16.300244 C8.136,15.5984007 8.455,14.9135054 8.83,14.2644997 L9.696,14.762968 C9.35,15.3601329 9.057,15.9911937 8.824,16.6372086 L8.824,16.6372086 Z M14.99,9.99860844 L14.58,9.08940236 C17.826,7.63686588 21.626,7.63686588 24.872,9.08940236 L24.462,9.99860844 C21.478,8.66271354 17.974,8.66271354 14.99,9.99860844 L14.99,9.99860844 Z M29.756,14.762968 L30.622,14.2644997 C30.998,14.9164962 31.318,15.6013916 31.569,16.301241 L30.627,16.6372086 C30.396,15.9931876 30.103,15.3631237 29.756,14.762968 L29.756,14.762968 Z M30.655,23.2827873 L31.598,23.6127732 C31.341,24.3425308 31.013,25.0543434 30.622,25.7292694 L29.756,25.2308012 C30.116,24.6097097 30.418,23.9537255 30.655,23.2827873 L30.655,23.2827873 Z M24.462,29.9961576 L24.872,30.9053637 C23.248,31.6321304 21.517,32 19.726,32 C17.935,32 16.204,31.6321304 14.58,30.9053637 L14.99,29.9961576 C17.976,31.3320525 21.476,31.3320525 24.462,29.9961576 L24.462,29.9961576 Z M11.5,29.4289008 C10.673,29.4289008 10,28.7579625 10,27.933496 C10,27.1090295 10.673,26.4380913 11.5,26.4380913 C12.328,26.4380913 13,27.1090295 13,27.933496 C13,28.7579625 12.328,29.4289008 11.5,29.4289008 L11.5,29.4289008 Z M11.5,25.4411548 C10.122,25.4411548 9,26.5597175 9,27.933496 C9,29.3082715 10.122,30.4258373 11.5,30.4258373 C12.879,30.4258373 14,29.3082715 14,27.933496 C14,26.5597175 12.879,25.4411548 11.5,25.4411548 L11.5,25.4411548 Z M27.5,29.4289008 C26.673,29.4289008 26,28.7579625 26,27.933496 C26,27.1090295 26.673,26.4380913 27.5,26.4380913 C28.328,26.4380913 29,27.1090295 29,27.933496 C29,28.7579625 28.328,29.4289008 27.5,29.4289008 L27.5,29.4289008 Z M27.5,25.4411548 C26.122,25.4411548 25,26.5597175 25,27.933496 C25,29.3082715 26.122,30.4258373 27.5,30.4258373 C28.879,30.4258373 30,29.3082715 30,27.933496 C30,26.5597175 28.879,25.4411548 27.5,25.4411548 L27.5,25.4411548 Z M31.5,21.4534088 C30.673,21.4534088 30,20.7824705 30,19.9580041 C30,19.1335376 30.673,18.4625993 31.5,18.4625993 C32.328,18.4625993 33,19.1335376 33,19.9580041 C33,20.7824705 32.328,21.4534088 31.5,21.4534088 L31.5,21.4534088 Z M31.5,17.4656628 C30.122,17.4656628 29,18.5842256 29,19.9580041 C29,21.3327795 30.122,22.4503453 31.5,22.4503453 C32.879,22.4503453 34,21.3327795 34,19.9580041 C34,18.5842256 32.879,17.4656628 31.5,17.4656628 L31.5,17.4656628 Z M11.5,10.5658653 C12.328,10.5658653 13,11.2368036 13,12.0612701 C13,12.8857365 12.328,13.5566748 11.5,13.5566748 C10.673,13.5566748 10,12.8857365 10,12.0612701 C10,11.2368036 10.673,10.5658653 11.5,10.5658653 L11.5,10.5658653 Z M11.5,14.5536113 C12.879,14.5536113 14,13.4350485 14,12.0612701 C14,10.6864946 12.879,9.56892881 11.5,9.56892881 C10.122,9.56892881 9,10.6864946 9,12.0612701 C9,13.4350485 10.122,14.5536113 11.5,14.5536113 L11.5,14.5536113 Z M27.5,10.5658653 C28.328,10.5658653 29,11.2368036 29,12.0612701 C29,12.8857365 28.328,13.5566748 27.5,13.5566748 C26.673,13.5566748 26,12.8857365 26,12.0612701 C26,11.2368036 26.673,10.5658653 27.5,10.5658653 L27.5,10.5658653 Z M27.5,14.5536113 C28.879,14.5536113 30,13.4350485 30,12.0612701 C30,10.6864946 28.879,9.56892881 27.5,9.56892881 C26.122,9.56892881 25,10.6864946 25,12.0612701 C25,13.4350485 26.122,14.5536113 27.5,14.5536113 L27.5,14.5536113 Z M8.5,21.4534088 C7.673,21.4534088 7,20.7824705 7,19.9580041 C7,19.1335376 7.673,18.4625993 8.5,18.4625993 C9.328,18.4625993 10,19.1335376 10,19.9580041 C10,20.7824705 9.328,21.4534088 8.5,21.4534088 L8.5,21.4534088 Z M16.0020589,20.0228049 C16.004,19.8902124 15.955,19.7626045 15.862,19.6678955 L14.36,18.1166623 L13.641,18.8085363 L14.316,19.5063918 L10.955,19.5063918 C10.741,18.3479516 9.724,17.4656628 8.5,17.4656628 C7.122,17.4656628 6,18.5842256 6,19.9580041 C6,21.3327795 7.122,22.4503453 8.5,22.4503453 C9.691,22.4503453 10.685,21.6159094 10.936,20.5033283 L14.27,20.5033283 L13.654,21.0945117 L14.347,21.8133029 L15.849,20.3727296 C15.945,20.2810115 15.999,20.1553975 16.0020589,20.0228049 L16.0020589,20.0228049 Z M25.658,21.0905239 L26.284,20.5033283 L24,20.5033283 L24,19.5063918 L26.34,19.5063918 L25.647,18.8155148 L26.354,18.1106807 L27.901,19.6519445 C27.997,19.7476504 28.049,19.8772522 28.047,20.0118386 C28.045,20.147422 27.989,20.2750299 27.89,20.367745 L26.343,21.8162937 L25.658,21.0905239 Z M22.414,22.8222026 C21.664,22.5191339 20.841,22.3566333 20,22.3566333 C19.16,22.3566333 18.337,22.5191339 17.587,22.8222026 C18.255,21.0556311 18.255,18.8613739 17.587,17.0948024 C19.087,17.7009398 20.914,17.7009398 22.414,17.0948024 C21.746,18.8613739 21.746,21.0556311 22.414,22.8222026 L22.414,22.8222026 Z M24.354,15.8247053 C24.452,15.7270056 24.5,15.5993977 24.5,15.4717898 C24.5,15.3441819 24.452,15.2165741 24.354,15.1198712 C24.159,14.9244717 23.842,14.9244717 23.647,15.1198712 C22.727,16.0370528 21.398,16.5624383 20,16.5624383 C18.603,16.5624383 17.274,16.0370528 16.354,15.1198712 C16.159,14.9244717 15.842,14.9244717 15.647,15.1198712 C15.549,15.2165741 15.5,15.3441819 15.5,15.4717898 C15.5,15.5993977 15.549,15.7270056 15.647,15.8247053 C17.584,17.7557713 17.584,22.1602368 15.647,24.0922997 C15.549,24.1890025 15.5,24.3166104 15.5,24.4442183 C15.5,24.5718262 15.549,24.699434 15.647,24.7971338 C15.842,24.9915364 16.159,24.9915364 16.354,24.7971338 C17.274,23.8799522 18.603,23.3535698 20,23.3535698 C21.398,23.3535698 22.727,23.8799522 23.647,24.7971338 C23.745,24.8938366 23.872,24.9426865 24,24.9426865 C24.128,24.9426865 24.256,24.8938366 24.354,24.7971338 C24.452,24.699434 24.5,24.5718262 24.5,24.4442183 C24.5,24.3166104 24.452,24.1890025 24.354,24.0922997 C22.416,22.1602368 22.416,17.7557713 24.354,15.8247053 L24.354,15.8247053 Z\" id=\"Amazon-MQ-Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MQ_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.726,25.2816449 L8.863,25.7860948 C8.458,25.0972117 8.119,24.3664572 7.854,23.6127732 L8.797,23.2827873 C9.041,23.9756581 9.354,24.6485903 9.726,25.2816449 L9.726,25.2816449 Z M8.824,16.6372086 L7.882,16.300244 C8.136,15.5984007 8.455,14.9135054 8.83,14.2644997 L9.696,14.762968 C9.35,15.3601329 9.057,15.9911937 8.824,16.6372086 L8.824,16.6372086 Z M14.99,9.99860844 L14.58,9.08940236 C17.826,7.63686588 21.626,7.63686588 24.872,9.08940236 L24.462,9.99860844 C21.478,8.66271354 17.974,8.66271354 14.99,9.99860844 L14.99,9.99860844 Z M29.756,14.762968 L30.622,14.2644997 C30.998,14.9164962 31.318,15.6013916 31.569,16.301241 L30.627,16.6372086 C30.396,15.9931876 30.103,15.3631237 29.756,14.762968 L29.756,14.762968 Z M30.655,23.2827873 L31.598,23.6127732 C31.341,24.3425308 31.013,25.0543434 30.622,25.7292694 L29.756,25.2308012 C30.116,24.6097097 30.418,23.9537255 30.655,23.2827873 L30.655,23.2827873 Z M24.462,29.9961576 L24.872,30.9053637 C23.248,31.6321304 21.517,32 19.726,32 C17.935,32 16.204,31.6321304 14.58,30.9053637 L14.99,29.9961576 C17.976,31.3320525 21.476,31.3320525 24.462,29.9961576 L24.462,29.9961576 Z M11.5,29.4289008 C10.673,29.4289008 10,28.7579625 10,27.933496 C10,27.1090295 10.673,26.4380913 11.5,26.4380913 C12.328,26.4380913 13,27.1090295 13,27.933496 C13,28.7579625 12.328,29.4289008 11.5,29.4289008 L11.5,29.4289008 Z M11.5,25.4411548 C10.122,25.4411548 9,26.5597175 9,27.933496 C9,29.3082715 10.122,30.4258373 11.5,30.4258373 C12.879,30.4258373 14,29.3082715 14,27.933496 C14,26.5597175 12.879,25.4411548 11.5,25.4411548 L11.5,25.4411548 Z M27.5,29.4289008 C26.673,29.4289008 26,28.7579625 26,27.933496 C26,27.1090295 26.673,26.4380913 27.5,26.4380913 C28.328,26.4380913 29,27.1090295 29,27.933496 C29,28.7579625 28.328,29.4289008 27.5,29.4289008 L27.5,29.4289008 Z M27.5,25.4411548 C26.122,25.4411548 25,26.5597175 25,27.933496 C25,29.3082715 26.122,30.4258373 27.5,30.4258373 C28.879,30.4258373 30,29.3082715 30,27.933496 C30,26.5597175 28.879,25.4411548 27.5,25.4411548 L27.5,25.4411548 Z M31.5,21.4534088 C30.673,21.4534088 30,20.7824705 30,19.9580041 C30,19.1335376 30.673,18.4625993 31.5,18.4625993 C32.328,18.4625993 33,19.1335376 33,19.9580041 C33,20.7824705 32.328,21.4534088 31.5,21.4534088 L31.5,21.4534088 Z M31.5,17.4656628 C30.122,17.4656628 29,18.5842256 29,19.9580041 C29,21.3327795 30.122,22.4503453 31.5,22.4503453 C32.879,22.4503453 34,21.3327795 34,19.9580041 C34,18.5842256 32.879,17.4656628 31.5,17.4656628 L31.5,17.4656628 Z M11.5,10.5658653 C12.328,10.5658653 13,11.2368036 13,12.0612701 C13,12.8857365 12.328,13.5566748 11.5,13.5566748 C10.673,13.5566748 10,12.8857365 10,12.0612701 C10,11.2368036 10.673,10.5658653 11.5,10.5658653 L11.5,10.5658653 Z M11.5,14.5536113 C12.879,14.5536113 14,13.4350485 14,12.0612701 C14,10.6864946 12.879,9.56892881 11.5,9.56892881 C10.122,9.56892881 9,10.6864946 9,12.0612701 C9,13.4350485 10.122,14.5536113 11.5,14.5536113 L11.5,14.5536113 Z M27.5,10.5658653 C28.328,10.5658653 29,11.2368036 29,12.0612701 C29,12.8857365 28.328,13.5566748 27.5,13.5566748 C26.673,13.5566748 26,12.8857365 26,12.0612701 C26,11.2368036 26.673,10.5658653 27.5,10.5658653 L27.5,10.5658653 Z M27.5,14.5536113 C28.879,14.5536113 30,13.4350485 30,12.0612701 C30,10.6864946 28.879,9.56892881 27.5,9.56892881 C26.122,9.56892881 25,10.6864946 25,12.0612701 C25,13.4350485 26.122,14.5536113 27.5,14.5536113 L27.5,14.5536113 Z M8.5,21.4534088 C7.673,21.4534088 7,20.7824705 7,19.9580041 C7,19.1335376 7.673,18.4625993 8.5,18.4625993 C9.328,18.4625993 10,19.1335376 10,19.9580041 C10,20.7824705 9.328,21.4534088 8.5,21.4534088 L8.5,21.4534088 Z M16.0020589,20.0228049 C16.004,19.8902124 15.955,19.7626045 15.862,19.6678955 L14.36,18.1166623 L13.641,18.8085363 L14.316,19.5063918 L10.955,19.5063918 C10.741,18.3479516 9.724,17.4656628 8.5,17.4656628 C7.122,17.4656628 6,18.5842256 6,19.9580041 C6,21.3327795 7.122,22.4503453 8.5,22.4503453 C9.691,22.4503453 10.685,21.6159094 10.936,20.5033283 L14.27,20.5033283 L13.654,21.0945117 L14.347,21.8133029 L15.849,20.3727296 C15.945,20.2810115 15.999,20.1553975 16.0020589,20.0228049 L16.0020589,20.0228049 Z M25.658,21.0905239 L26.284,20.5033283 L24,20.5033283 L24,19.5063918 L26.34,19.5063918 L25.647,18.8155148 L26.354,18.1106807 L27.901,19.6519445 C27.997,19.7476504 28.049,19.8772522 28.047,20.0118386 C28.045,20.147422 27.989,20.2750299 27.89,20.367745 L26.343,21.8162937 L25.658,21.0905239 Z M22.414,22.8222026 C21.664,22.5191339 20.841,22.3566333 20,22.3566333 C19.16,22.3566333 18.337,22.5191339 17.587,22.8222026 C18.255,21.0556311 18.255,18.8613739 17.587,17.0948024 C19.087,17.7009398 20.914,17.7009398 22.414,17.0948024 C21.746,18.8613739 21.746,21.0556311 22.414,22.8222026 L22.414,22.8222026 Z M24.354,15.8247053 C24.452,15.7270056 24.5,15.5993977 24.5,15.4717898 C24.5,15.3441819 24.452,15.2165741 24.354,15.1198712 C24.159,14.9244717 23.842,14.9244717 23.647,15.1198712 C22.727,16.0370528 21.398,16.5624383 20,16.5624383 C18.603,16.5624383 17.274,16.0370528 16.354,15.1198712 C16.159,14.9244717 15.842,14.9244717 15.647,15.1198712 C15.549,15.2165741 15.5,15.3441819 15.5,15.4717898 C15.5,15.5993977 15.549,15.7270056 15.647,15.8247053 C17.584,17.7557713 17.584,22.1602368 15.647,24.0922997 C15.549,24.1890025 15.5,24.3166104 15.5,24.4442183 C15.5,24.5718262 15.549,24.699434 15.647,24.7971338 C15.842,24.9915364 16.159,24.9915364 16.354,24.7971338 C17.274,23.8799522 18.603,23.3535698 20,23.3535698 C21.398,23.3535698 22.727,23.8799522 23.647,24.7971338 C23.745,24.8938366 23.872,24.9426865 24,24.9426865 C24.128,24.9426865 24.256,24.8938366 24.354,24.7971338 C24.452,24.699434 24.5,24.5718262 24.5,24.4442183 C24.5,24.3166104 24.452,24.1890025 24.354,24.0922997 C22.416,22.1602368 22.416,17.7557713 24.354,15.8247053 L24.354,15.8247053 Z\" id=\"Amazon-MQ-Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v0.0.36" + }, + "name": "aws-mq-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Streaming \u0026 Messaging", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#E7157B", + "shape": "rectangle", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-MQ_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath d=\"M9.726,25.2816449 L8.863,25.7860948 C8.458,25.0972117 8.119,24.3664572 7.854,23.6127732 L8.797,23.2827873 C9.041,23.9756581 9.354,24.6485903 9.726,25.2816449 L9.726,25.2816449 Z M8.824,16.6372086 L7.882,16.300244 C8.136,15.5984007 8.455,14.9135054 8.83,14.2644997 L9.696,14.762968 C9.35,15.3601329 9.057,15.9911937 8.824,16.6372086 L8.824,16.6372086 Z M14.99,9.99860844 L14.58,9.08940236 C17.826,7.63686588 21.626,7.63686588 24.872,9.08940236 L24.462,9.99860844 C21.478,8.66271354 17.974,8.66271354 14.99,9.99860844 L14.99,9.99860844 Z M29.756,14.762968 L30.622,14.2644997 C30.998,14.9164962 31.318,15.6013916 31.569,16.301241 L30.627,16.6372086 C30.396,15.9931876 30.103,15.3631237 29.756,14.762968 L29.756,14.762968 Z M30.655,23.2827873 L31.598,23.6127732 C31.341,24.3425308 31.013,25.0543434 30.622,25.7292694 L29.756,25.2308012 C30.116,24.6097097 30.418,23.9537255 30.655,23.2827873 L30.655,23.2827873 Z M24.462,29.9961576 L24.872,30.9053637 C23.248,31.6321304 21.517,32 19.726,32 C17.935,32 16.204,31.6321304 14.58,30.9053637 L14.99,29.9961576 C17.976,31.3320525 21.476,31.3320525 24.462,29.9961576 L24.462,29.9961576 Z M11.5,29.4289008 C10.673,29.4289008 10,28.7579625 10,27.933496 C10,27.1090295 10.673,26.4380913 11.5,26.4380913 C12.328,26.4380913 13,27.1090295 13,27.933496 C13,28.7579625 12.328,29.4289008 11.5,29.4289008 L11.5,29.4289008 Z M11.5,25.4411548 C10.122,25.4411548 9,26.5597175 9,27.933496 C9,29.3082715 10.122,30.4258373 11.5,30.4258373 C12.879,30.4258373 14,29.3082715 14,27.933496 C14,26.5597175 12.879,25.4411548 11.5,25.4411548 L11.5,25.4411548 Z M27.5,29.4289008 C26.673,29.4289008 26,28.7579625 26,27.933496 C26,27.1090295 26.673,26.4380913 27.5,26.4380913 C28.328,26.4380913 29,27.1090295 29,27.933496 C29,28.7579625 28.328,29.4289008 27.5,29.4289008 L27.5,29.4289008 Z M27.5,25.4411548 C26.122,25.4411548 25,26.5597175 25,27.933496 C25,29.3082715 26.122,30.4258373 27.5,30.4258373 C28.879,30.4258373 30,29.3082715 30,27.933496 C30,26.5597175 28.879,25.4411548 27.5,25.4411548 L27.5,25.4411548 Z M31.5,21.4534088 C30.673,21.4534088 30,20.7824705 30,19.9580041 C30,19.1335376 30.673,18.4625993 31.5,18.4625993 C32.328,18.4625993 33,19.1335376 33,19.9580041 C33,20.7824705 32.328,21.4534088 31.5,21.4534088 L31.5,21.4534088 Z M31.5,17.4656628 C30.122,17.4656628 29,18.5842256 29,19.9580041 C29,21.3327795 30.122,22.4503453 31.5,22.4503453 C32.879,22.4503453 34,21.3327795 34,19.9580041 C34,18.5842256 32.879,17.4656628 31.5,17.4656628 L31.5,17.4656628 Z M11.5,10.5658653 C12.328,10.5658653 13,11.2368036 13,12.0612701 C13,12.8857365 12.328,13.5566748 11.5,13.5566748 C10.673,13.5566748 10,12.8857365 10,12.0612701 C10,11.2368036 10.673,10.5658653 11.5,10.5658653 L11.5,10.5658653 Z M11.5,14.5536113 C12.879,14.5536113 14,13.4350485 14,12.0612701 C14,10.6864946 12.879,9.56892881 11.5,9.56892881 C10.122,9.56892881 9,10.6864946 9,12.0612701 C9,13.4350485 10.122,14.5536113 11.5,14.5536113 L11.5,14.5536113 Z M27.5,10.5658653 C28.328,10.5658653 29,11.2368036 29,12.0612701 C29,12.8857365 28.328,13.5566748 27.5,13.5566748 C26.673,13.5566748 26,12.8857365 26,12.0612701 C26,11.2368036 26.673,10.5658653 27.5,10.5658653 L27.5,10.5658653 Z M27.5,14.5536113 C28.879,14.5536113 30,13.4350485 30,12.0612701 C30,10.6864946 28.879,9.56892881 27.5,9.56892881 C26.122,9.56892881 25,10.6864946 25,12.0612701 C25,13.4350485 26.122,14.5536113 27.5,14.5536113 L27.5,14.5536113 Z M8.5,21.4534088 C7.673,21.4534088 7,20.7824705 7,19.9580041 C7,19.1335376 7.673,18.4625993 8.5,18.4625993 C9.328,18.4625993 10,19.1335376 10,19.9580041 C10,20.7824705 9.328,21.4534088 8.5,21.4534088 L8.5,21.4534088 Z M16.0020589,20.0228049 C16.004,19.8902124 15.955,19.7626045 15.862,19.6678955 L14.36,18.1166623 L13.641,18.8085363 L14.316,19.5063918 L10.955,19.5063918 C10.741,18.3479516 9.724,17.4656628 8.5,17.4656628 C7.122,17.4656628 6,18.5842256 6,19.9580041 C6,21.3327795 7.122,22.4503453 8.5,22.4503453 C9.691,22.4503453 10.685,21.6159094 10.936,20.5033283 L14.27,20.5033283 L13.654,21.0945117 L14.347,21.8133029 L15.849,20.3727296 C15.945,20.2810115 15.999,20.1553975 16.0020589,20.0228049 L16.0020589,20.0228049 Z M25.658,21.0905239 L26.284,20.5033283 L24,20.5033283 L24,19.5063918 L26.34,19.5063918 L25.647,18.8155148 L26.354,18.1106807 L27.901,19.6519445 C27.997,19.7476504 28.049,19.8772522 28.047,20.0118386 C28.045,20.147422 27.989,20.2750299 27.89,20.367745 L26.343,21.8162937 L25.658,21.0905239 Z M22.414,22.8222026 C21.664,22.5191339 20.841,22.3566333 20,22.3566333 C19.16,22.3566333 18.337,22.5191339 17.587,22.8222026 C18.255,21.0556311 18.255,18.8613739 17.587,17.0948024 C19.087,17.7009398 20.914,17.7009398 22.414,17.0948024 C21.746,18.8613739 21.746,21.0556311 22.414,22.8222026 L22.414,22.8222026 Z M24.354,15.8247053 C24.452,15.7270056 24.5,15.5993977 24.5,15.4717898 C24.5,15.3441819 24.452,15.2165741 24.354,15.1198712 C24.159,14.9244717 23.842,14.9244717 23.647,15.1198712 C22.727,16.0370528 21.398,16.5624383 20,16.5624383 C18.603,16.5624383 17.274,16.0370528 16.354,15.1198712 C16.159,14.9244717 15.842,14.9244717 15.647,15.1198712 C15.549,15.2165741 15.5,15.3441819 15.5,15.4717898 C15.5,15.5993977 15.549,15.7270056 15.647,15.8247053 C17.584,17.7557713 17.584,22.1602368 15.647,24.0922997 C15.549,24.1890025 15.5,24.3166104 15.5,24.4442183 C15.5,24.5718262 15.549,24.699434 15.647,24.7971338 C15.842,24.9915364 16.159,24.9915364 16.354,24.7971338 C17.274,23.8799522 18.603,23.3535698 20,23.3535698 C21.398,23.3535698 22.727,23.8799522 23.647,24.7971338 C23.745,24.8938366 23.872,24.9426865 24,24.9426865 C24.128,24.9426865 24.256,24.8938366 24.354,24.7971338 C24.452,24.699434 24.5,24.5718262 24.5,24.4442183 C24.5,24.3166104 24.452,24.1890025 24.354,24.0922997 C22.416,22.1602368 22.416,17.7557713 24.354,15.8247053 L24.354,15.8247053 Z\" id=\"Amazon-MQ-Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-MQ_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath d=\"M9.726,25.2816449 L8.863,25.7860948 C8.458,25.0972117 8.119,24.3664572 7.854,23.6127732 L8.797,23.2827873 C9.041,23.9756581 9.354,24.6485903 9.726,25.2816449 L9.726,25.2816449 Z M8.824,16.6372086 L7.882,16.300244 C8.136,15.5984007 8.455,14.9135054 8.83,14.2644997 L9.696,14.762968 C9.35,15.3601329 9.057,15.9911937 8.824,16.6372086 L8.824,16.6372086 Z M14.99,9.99860844 L14.58,9.08940236 C17.826,7.63686588 21.626,7.63686588 24.872,9.08940236 L24.462,9.99860844 C21.478,8.66271354 17.974,8.66271354 14.99,9.99860844 L14.99,9.99860844 Z M29.756,14.762968 L30.622,14.2644997 C30.998,14.9164962 31.318,15.6013916 31.569,16.301241 L30.627,16.6372086 C30.396,15.9931876 30.103,15.3631237 29.756,14.762968 L29.756,14.762968 Z M30.655,23.2827873 L31.598,23.6127732 C31.341,24.3425308 31.013,25.0543434 30.622,25.7292694 L29.756,25.2308012 C30.116,24.6097097 30.418,23.9537255 30.655,23.2827873 L30.655,23.2827873 Z M24.462,29.9961576 L24.872,30.9053637 C23.248,31.6321304 21.517,32 19.726,32 C17.935,32 16.204,31.6321304 14.58,30.9053637 L14.99,29.9961576 C17.976,31.3320525 21.476,31.3320525 24.462,29.9961576 L24.462,29.9961576 Z M11.5,29.4289008 C10.673,29.4289008 10,28.7579625 10,27.933496 C10,27.1090295 10.673,26.4380913 11.5,26.4380913 C12.328,26.4380913 13,27.1090295 13,27.933496 C13,28.7579625 12.328,29.4289008 11.5,29.4289008 L11.5,29.4289008 Z M11.5,25.4411548 C10.122,25.4411548 9,26.5597175 9,27.933496 C9,29.3082715 10.122,30.4258373 11.5,30.4258373 C12.879,30.4258373 14,29.3082715 14,27.933496 C14,26.5597175 12.879,25.4411548 11.5,25.4411548 L11.5,25.4411548 Z M27.5,29.4289008 C26.673,29.4289008 26,28.7579625 26,27.933496 C26,27.1090295 26.673,26.4380913 27.5,26.4380913 C28.328,26.4380913 29,27.1090295 29,27.933496 C29,28.7579625 28.328,29.4289008 27.5,29.4289008 L27.5,29.4289008 Z M27.5,25.4411548 C26.122,25.4411548 25,26.5597175 25,27.933496 C25,29.3082715 26.122,30.4258373 27.5,30.4258373 C28.879,30.4258373 30,29.3082715 30,27.933496 C30,26.5597175 28.879,25.4411548 27.5,25.4411548 L27.5,25.4411548 Z M31.5,21.4534088 C30.673,21.4534088 30,20.7824705 30,19.9580041 C30,19.1335376 30.673,18.4625993 31.5,18.4625993 C32.328,18.4625993 33,19.1335376 33,19.9580041 C33,20.7824705 32.328,21.4534088 31.5,21.4534088 L31.5,21.4534088 Z M31.5,17.4656628 C30.122,17.4656628 29,18.5842256 29,19.9580041 C29,21.3327795 30.122,22.4503453 31.5,22.4503453 C32.879,22.4503453 34,21.3327795 34,19.9580041 C34,18.5842256 32.879,17.4656628 31.5,17.4656628 L31.5,17.4656628 Z M11.5,10.5658653 C12.328,10.5658653 13,11.2368036 13,12.0612701 C13,12.8857365 12.328,13.5566748 11.5,13.5566748 C10.673,13.5566748 10,12.8857365 10,12.0612701 C10,11.2368036 10.673,10.5658653 11.5,10.5658653 L11.5,10.5658653 Z M11.5,14.5536113 C12.879,14.5536113 14,13.4350485 14,12.0612701 C14,10.6864946 12.879,9.56892881 11.5,9.56892881 C10.122,9.56892881 9,10.6864946 9,12.0612701 C9,13.4350485 10.122,14.5536113 11.5,14.5536113 L11.5,14.5536113 Z M27.5,10.5658653 C28.328,10.5658653 29,11.2368036 29,12.0612701 C29,12.8857365 28.328,13.5566748 27.5,13.5566748 C26.673,13.5566748 26,12.8857365 26,12.0612701 C26,11.2368036 26.673,10.5658653 27.5,10.5658653 L27.5,10.5658653 Z M27.5,14.5536113 C28.879,14.5536113 30,13.4350485 30,12.0612701 C30,10.6864946 28.879,9.56892881 27.5,9.56892881 C26.122,9.56892881 25,10.6864946 25,12.0612701 C25,13.4350485 26.122,14.5536113 27.5,14.5536113 L27.5,14.5536113 Z M8.5,21.4534088 C7.673,21.4534088 7,20.7824705 7,19.9580041 C7,19.1335376 7.673,18.4625993 8.5,18.4625993 C9.328,18.4625993 10,19.1335376 10,19.9580041 C10,20.7824705 9.328,21.4534088 8.5,21.4534088 L8.5,21.4534088 Z M16.0020589,20.0228049 C16.004,19.8902124 15.955,19.7626045 15.862,19.6678955 L14.36,18.1166623 L13.641,18.8085363 L14.316,19.5063918 L10.955,19.5063918 C10.741,18.3479516 9.724,17.4656628 8.5,17.4656628 C7.122,17.4656628 6,18.5842256 6,19.9580041 C6,21.3327795 7.122,22.4503453 8.5,22.4503453 C9.691,22.4503453 10.685,21.6159094 10.936,20.5033283 L14.27,20.5033283 L13.654,21.0945117 L14.347,21.8133029 L15.849,20.3727296 C15.945,20.2810115 15.999,20.1553975 16.0020589,20.0228049 L16.0020589,20.0228049 Z M25.658,21.0905239 L26.284,20.5033283 L24,20.5033283 L24,19.5063918 L26.34,19.5063918 L25.647,18.8155148 L26.354,18.1106807 L27.901,19.6519445 C27.997,19.7476504 28.049,19.8772522 28.047,20.0118386 C28.045,20.147422 27.989,20.2750299 27.89,20.367745 L26.343,21.8162937 L25.658,21.0905239 Z M22.414,22.8222026 C21.664,22.5191339 20.841,22.3566333 20,22.3566333 C19.16,22.3566333 18.337,22.5191339 17.587,22.8222026 C18.255,21.0556311 18.255,18.8613739 17.587,17.0948024 C19.087,17.7009398 20.914,17.7009398 22.414,17.0948024 C21.746,18.8613739 21.746,21.0556311 22.414,22.8222026 L22.414,22.8222026 Z M24.354,15.8247053 C24.452,15.7270056 24.5,15.5993977 24.5,15.4717898 C24.5,15.3441819 24.452,15.2165741 24.354,15.1198712 C24.159,14.9244717 23.842,14.9244717 23.647,15.1198712 C22.727,16.0370528 21.398,16.5624383 20,16.5624383 C18.603,16.5624383 17.274,16.0370528 16.354,15.1198712 C16.159,14.9244717 15.842,14.9244717 15.647,15.1198712 C15.549,15.2165741 15.5,15.3441819 15.5,15.4717898 C15.5,15.5993977 15.549,15.7270056 15.647,15.8247053 C17.584,17.7557713 17.584,22.1602368 15.647,24.0922997 C15.549,24.1890025 15.5,24.3166104 15.5,24.4442183 C15.5,24.5718262 15.549,24.699434 15.647,24.7971338 C15.842,24.9915364 16.159,24.9915364 16.354,24.7971338 C17.274,23.8799522 18.603,23.3535698 20,23.3535698 C21.398,23.3535698 22.727,23.8799522 23.647,24.7971338 C23.745,24.8938366 23.872,24.9426865 24,24.9426865 C24.128,24.9426865 24.256,24.8938366 24.354,24.7971338 C24.452,24.699434 24.5,24.5718262 24.5,24.4442183 C24.5,24.3166104 24.452,24.1890025 24.354,24.0922997 C22.416,22.1602368 22.416,17.7557713 24.354,15.8247053 L24.354,15.8247053 Z\" id=\"Amazon-MQ-Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-mq-controller/v0.0.36/v1.0.0/components/Broker.json b/server/meshmodel/aws-mq-controller/v0.0.36/v1.0.0/components/Broker.json new file mode 100644 index 00000000000..49e69e45cc4 --- /dev/null +++ b/server/meshmodel/aws-mq-controller/v0.0.36/v1.0.0/components/Broker.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "Broker", + "schema": "{\n \"description\": \"Broker is the Schema for the Brokers API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"BrokerSpec defines the desired state of Broker.\",\n \"properties\": {\n \"authenticationStrategy\": {\n \"type\": \"string\"\n },\n \"autoMinorVersionUpgrade\": {\n \"type\": \"boolean\"\n },\n \"configuration\": {\n \"description\": \"A list of information about the configuration.\\n\\n\\nDoes not apply to RabbitMQ brokers.\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"revision\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"creatorRequestID\": {\n \"type\": \"string\"\n },\n \"deploymentMode\": {\n \"type\": \"string\"\n },\n \"encryptionOptions\": {\n \"description\": \"Does not apply to RabbitMQ brokers.\\n\\n\\nEncryption options for the broker.\",\n \"properties\": {\n \"kmsKeyID\": {\n \"type\": \"string\"\n },\n \"useAWSOwnedKey\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"engineType\": {\n \"type\": \"string\"\n },\n \"engineVersion\": {\n \"type\": \"string\"\n },\n \"hostInstanceType\": {\n \"type\": \"string\"\n },\n \"ldapServerMetadata\": {\n \"description\": \"Optional. The metadata of the LDAP server used to authenticate and authorize\\nconnections to the broker.\\n\\n\\nDoes not apply to RabbitMQ brokers.\",\n \"properties\": {\n \"hosts\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"roleBase\": {\n \"type\": \"string\"\n },\n \"roleName\": {\n \"type\": \"string\"\n },\n \"roleSearchMatching\": {\n \"type\": \"string\"\n },\n \"roleSearchSubtree\": {\n \"type\": \"boolean\"\n },\n \"serviceAccountPassword\": {\n \"type\": \"string\"\n },\n \"serviceAccountUsername\": {\n \"type\": \"string\"\n },\n \"userBase\": {\n \"type\": \"string\"\n },\n \"userRoleName\": {\n \"type\": \"string\"\n },\n \"userSearchMatching\": {\n \"type\": \"string\"\n },\n \"userSearchSubtree\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logs\": {\n \"description\": \"The list of information about logs to be enabled for the specified broker.\",\n \"properties\": {\n \"audit\": {\n \"type\": \"boolean\"\n },\n \"general\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"maintenanceWindowStartTime\": {\n \"description\": \"The scheduled time period relative to UTC during which Amazon MQ begins to\\napply pending updates or patches to the broker.\",\n \"properties\": {\n \"dayOfWeek\": {\n \"type\": \"string\"\n },\n \"timeOfDay\": {\n \"type\": \"string\"\n },\n \"timeZone\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"publiclyAccessible\": {\n \"type\": \"boolean\"\n },\n \"securityGroupRefs\": {\n \"items\": {\n \"description\": \"AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\\ntype to provide more user friendly syntax for references using 'from' field\\nEx:\\nAPIIDRef:\\n\\n\\n\\tfrom:\\n\\t name: my-api\",\n \"properties\": {\n \"from\": {\n \"description\": \"AWSResourceReference provides all the values necessary to reference another\\nk8s resource for finding the identifier(Id/ARN/Name)\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"securityGroups\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"storageType\": {\n \"type\": \"string\"\n },\n \"subnetIDs\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"subnetRefs\": {\n \"items\": {\n \"description\": \"AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\\ntype to provide more user friendly syntax for references using 'from' field\\nEx:\\nAPIIDRef:\\n\\n\\n\\tfrom:\\n\\t name: my-api\",\n \"properties\": {\n \"from\": {\n \"description\": \"AWSResourceReference provides all the values necessary to reference another\\nk8s resource for finding the identifier(Id/ARN/Name)\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tags\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"users\": {\n \"items\": {\n \"description\": \"A user associated with the broker. For RabbitMQ brokers, one and only one\\nadministrative user is accepted and created when a broker is first provisioned.\\nAll subsequent broker users are created by making RabbitMQ API calls directly\\nto brokers or via the RabbitMQ web console.\",\n \"properties\": {\n \"consoleAccess\": {\n \"type\": \"boolean\"\n },\n \"groups\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"password\": {\n \"description\": \"SecretKeyReference combines a k8s corev1.SecretReference with a\\nspecific key within the referred-to Secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key is the key within the secret\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name is unique within a namespace to reference a secret resource.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"namespace defines the space within which the secret name must be unique.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"autoMinorVersionUpgrade\",\n \"deploymentMode\",\n \"engineType\",\n \"engineVersion\",\n \"hostInstanceType\",\n \"name\",\n \"publiclyAccessible\",\n \"users\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Broker\",\n \"type\": \"object\"\n}", + "version": "mq.services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Broker", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/mq-controller/main/helm" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "AWS MQ", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#E7157B", + "shape": "rectangle", + "source_uri": "git://github.com/aws-controllers-k8s/mq-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MQ_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.726,25.2816449 L8.863,25.7860948 C8.458,25.0972117 8.119,24.3664572 7.854,23.6127732 L8.797,23.2827873 C9.041,23.9756581 9.354,24.6485903 9.726,25.2816449 L9.726,25.2816449 Z M8.824,16.6372086 L7.882,16.300244 C8.136,15.5984007 8.455,14.9135054 8.83,14.2644997 L9.696,14.762968 C9.35,15.3601329 9.057,15.9911937 8.824,16.6372086 L8.824,16.6372086 Z M14.99,9.99860844 L14.58,9.08940236 C17.826,7.63686588 21.626,7.63686588 24.872,9.08940236 L24.462,9.99860844 C21.478,8.66271354 17.974,8.66271354 14.99,9.99860844 L14.99,9.99860844 Z M29.756,14.762968 L30.622,14.2644997 C30.998,14.9164962 31.318,15.6013916 31.569,16.301241 L30.627,16.6372086 C30.396,15.9931876 30.103,15.3631237 29.756,14.762968 L29.756,14.762968 Z M30.655,23.2827873 L31.598,23.6127732 C31.341,24.3425308 31.013,25.0543434 30.622,25.7292694 L29.756,25.2308012 C30.116,24.6097097 30.418,23.9537255 30.655,23.2827873 L30.655,23.2827873 Z M24.462,29.9961576 L24.872,30.9053637 C23.248,31.6321304 21.517,32 19.726,32 C17.935,32 16.204,31.6321304 14.58,30.9053637 L14.99,29.9961576 C17.976,31.3320525 21.476,31.3320525 24.462,29.9961576 L24.462,29.9961576 Z M11.5,29.4289008 C10.673,29.4289008 10,28.7579625 10,27.933496 C10,27.1090295 10.673,26.4380913 11.5,26.4380913 C12.328,26.4380913 13,27.1090295 13,27.933496 C13,28.7579625 12.328,29.4289008 11.5,29.4289008 L11.5,29.4289008 Z M11.5,25.4411548 C10.122,25.4411548 9,26.5597175 9,27.933496 C9,29.3082715 10.122,30.4258373 11.5,30.4258373 C12.879,30.4258373 14,29.3082715 14,27.933496 C14,26.5597175 12.879,25.4411548 11.5,25.4411548 L11.5,25.4411548 Z M27.5,29.4289008 C26.673,29.4289008 26,28.7579625 26,27.933496 C26,27.1090295 26.673,26.4380913 27.5,26.4380913 C28.328,26.4380913 29,27.1090295 29,27.933496 C29,28.7579625 28.328,29.4289008 27.5,29.4289008 L27.5,29.4289008 Z M27.5,25.4411548 C26.122,25.4411548 25,26.5597175 25,27.933496 C25,29.3082715 26.122,30.4258373 27.5,30.4258373 C28.879,30.4258373 30,29.3082715 30,27.933496 C30,26.5597175 28.879,25.4411548 27.5,25.4411548 L27.5,25.4411548 Z M31.5,21.4534088 C30.673,21.4534088 30,20.7824705 30,19.9580041 C30,19.1335376 30.673,18.4625993 31.5,18.4625993 C32.328,18.4625993 33,19.1335376 33,19.9580041 C33,20.7824705 32.328,21.4534088 31.5,21.4534088 L31.5,21.4534088 Z M31.5,17.4656628 C30.122,17.4656628 29,18.5842256 29,19.9580041 C29,21.3327795 30.122,22.4503453 31.5,22.4503453 C32.879,22.4503453 34,21.3327795 34,19.9580041 C34,18.5842256 32.879,17.4656628 31.5,17.4656628 L31.5,17.4656628 Z M11.5,10.5658653 C12.328,10.5658653 13,11.2368036 13,12.0612701 C13,12.8857365 12.328,13.5566748 11.5,13.5566748 C10.673,13.5566748 10,12.8857365 10,12.0612701 C10,11.2368036 10.673,10.5658653 11.5,10.5658653 L11.5,10.5658653 Z M11.5,14.5536113 C12.879,14.5536113 14,13.4350485 14,12.0612701 C14,10.6864946 12.879,9.56892881 11.5,9.56892881 C10.122,9.56892881 9,10.6864946 9,12.0612701 C9,13.4350485 10.122,14.5536113 11.5,14.5536113 L11.5,14.5536113 Z M27.5,10.5658653 C28.328,10.5658653 29,11.2368036 29,12.0612701 C29,12.8857365 28.328,13.5566748 27.5,13.5566748 C26.673,13.5566748 26,12.8857365 26,12.0612701 C26,11.2368036 26.673,10.5658653 27.5,10.5658653 L27.5,10.5658653 Z M27.5,14.5536113 C28.879,14.5536113 30,13.4350485 30,12.0612701 C30,10.6864946 28.879,9.56892881 27.5,9.56892881 C26.122,9.56892881 25,10.6864946 25,12.0612701 C25,13.4350485 26.122,14.5536113 27.5,14.5536113 L27.5,14.5536113 Z M8.5,21.4534088 C7.673,21.4534088 7,20.7824705 7,19.9580041 C7,19.1335376 7.673,18.4625993 8.5,18.4625993 C9.328,18.4625993 10,19.1335376 10,19.9580041 C10,20.7824705 9.328,21.4534088 8.5,21.4534088 L8.5,21.4534088 Z M16.0020589,20.0228049 C16.004,19.8902124 15.955,19.7626045 15.862,19.6678955 L14.36,18.1166623 L13.641,18.8085363 L14.316,19.5063918 L10.955,19.5063918 C10.741,18.3479516 9.724,17.4656628 8.5,17.4656628 C7.122,17.4656628 6,18.5842256 6,19.9580041 C6,21.3327795 7.122,22.4503453 8.5,22.4503453 C9.691,22.4503453 10.685,21.6159094 10.936,20.5033283 L14.27,20.5033283 L13.654,21.0945117 L14.347,21.8133029 L15.849,20.3727296 C15.945,20.2810115 15.999,20.1553975 16.0020589,20.0228049 L16.0020589,20.0228049 Z M25.658,21.0905239 L26.284,20.5033283 L24,20.5033283 L24,19.5063918 L26.34,19.5063918 L25.647,18.8155148 L26.354,18.1106807 L27.901,19.6519445 C27.997,19.7476504 28.049,19.8772522 28.047,20.0118386 C28.045,20.147422 27.989,20.2750299 27.89,20.367745 L26.343,21.8162937 L25.658,21.0905239 Z M22.414,22.8222026 C21.664,22.5191339 20.841,22.3566333 20,22.3566333 C19.16,22.3566333 18.337,22.5191339 17.587,22.8222026 C18.255,21.0556311 18.255,18.8613739 17.587,17.0948024 C19.087,17.7009398 20.914,17.7009398 22.414,17.0948024 C21.746,18.8613739 21.746,21.0556311 22.414,22.8222026 L22.414,22.8222026 Z M24.354,15.8247053 C24.452,15.7270056 24.5,15.5993977 24.5,15.4717898 C24.5,15.3441819 24.452,15.2165741 24.354,15.1198712 C24.159,14.9244717 23.842,14.9244717 23.647,15.1198712 C22.727,16.0370528 21.398,16.5624383 20,16.5624383 C18.603,16.5624383 17.274,16.0370528 16.354,15.1198712 C16.159,14.9244717 15.842,14.9244717 15.647,15.1198712 C15.549,15.2165741 15.5,15.3441819 15.5,15.4717898 C15.5,15.5993977 15.549,15.7270056 15.647,15.8247053 C17.584,17.7557713 17.584,22.1602368 15.647,24.0922997 C15.549,24.1890025 15.5,24.3166104 15.5,24.4442183 C15.5,24.5718262 15.549,24.699434 15.647,24.7971338 C15.842,24.9915364 16.159,24.9915364 16.354,24.7971338 C17.274,23.8799522 18.603,23.3535698 20,23.3535698 C21.398,23.3535698 22.727,23.8799522 23.647,24.7971338 C23.745,24.8938366 23.872,24.9426865 24,24.9426865 C24.128,24.9426865 24.256,24.8938366 24.354,24.7971338 C24.452,24.699434 24.5,24.5718262 24.5,24.4442183 C24.5,24.3166104 24.452,24.1890025 24.354,24.0922997 C22.416,22.1602368 22.416,17.7557713 24.354,15.8247053 L24.354,15.8247053 Z\" id=\"Amazon-MQ-Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MQ_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.726,25.2816449 L8.863,25.7860948 C8.458,25.0972117 8.119,24.3664572 7.854,23.6127732 L8.797,23.2827873 C9.041,23.9756581 9.354,24.6485903 9.726,25.2816449 L9.726,25.2816449 Z M8.824,16.6372086 L7.882,16.300244 C8.136,15.5984007 8.455,14.9135054 8.83,14.2644997 L9.696,14.762968 C9.35,15.3601329 9.057,15.9911937 8.824,16.6372086 L8.824,16.6372086 Z M14.99,9.99860844 L14.58,9.08940236 C17.826,7.63686588 21.626,7.63686588 24.872,9.08940236 L24.462,9.99860844 C21.478,8.66271354 17.974,8.66271354 14.99,9.99860844 L14.99,9.99860844 Z M29.756,14.762968 L30.622,14.2644997 C30.998,14.9164962 31.318,15.6013916 31.569,16.301241 L30.627,16.6372086 C30.396,15.9931876 30.103,15.3631237 29.756,14.762968 L29.756,14.762968 Z M30.655,23.2827873 L31.598,23.6127732 C31.341,24.3425308 31.013,25.0543434 30.622,25.7292694 L29.756,25.2308012 C30.116,24.6097097 30.418,23.9537255 30.655,23.2827873 L30.655,23.2827873 Z M24.462,29.9961576 L24.872,30.9053637 C23.248,31.6321304 21.517,32 19.726,32 C17.935,32 16.204,31.6321304 14.58,30.9053637 L14.99,29.9961576 C17.976,31.3320525 21.476,31.3320525 24.462,29.9961576 L24.462,29.9961576 Z M11.5,29.4289008 C10.673,29.4289008 10,28.7579625 10,27.933496 C10,27.1090295 10.673,26.4380913 11.5,26.4380913 C12.328,26.4380913 13,27.1090295 13,27.933496 C13,28.7579625 12.328,29.4289008 11.5,29.4289008 L11.5,29.4289008 Z M11.5,25.4411548 C10.122,25.4411548 9,26.5597175 9,27.933496 C9,29.3082715 10.122,30.4258373 11.5,30.4258373 C12.879,30.4258373 14,29.3082715 14,27.933496 C14,26.5597175 12.879,25.4411548 11.5,25.4411548 L11.5,25.4411548 Z M27.5,29.4289008 C26.673,29.4289008 26,28.7579625 26,27.933496 C26,27.1090295 26.673,26.4380913 27.5,26.4380913 C28.328,26.4380913 29,27.1090295 29,27.933496 C29,28.7579625 28.328,29.4289008 27.5,29.4289008 L27.5,29.4289008 Z M27.5,25.4411548 C26.122,25.4411548 25,26.5597175 25,27.933496 C25,29.3082715 26.122,30.4258373 27.5,30.4258373 C28.879,30.4258373 30,29.3082715 30,27.933496 C30,26.5597175 28.879,25.4411548 27.5,25.4411548 L27.5,25.4411548 Z M31.5,21.4534088 C30.673,21.4534088 30,20.7824705 30,19.9580041 C30,19.1335376 30.673,18.4625993 31.5,18.4625993 C32.328,18.4625993 33,19.1335376 33,19.9580041 C33,20.7824705 32.328,21.4534088 31.5,21.4534088 L31.5,21.4534088 Z M31.5,17.4656628 C30.122,17.4656628 29,18.5842256 29,19.9580041 C29,21.3327795 30.122,22.4503453 31.5,22.4503453 C32.879,22.4503453 34,21.3327795 34,19.9580041 C34,18.5842256 32.879,17.4656628 31.5,17.4656628 L31.5,17.4656628 Z M11.5,10.5658653 C12.328,10.5658653 13,11.2368036 13,12.0612701 C13,12.8857365 12.328,13.5566748 11.5,13.5566748 C10.673,13.5566748 10,12.8857365 10,12.0612701 C10,11.2368036 10.673,10.5658653 11.5,10.5658653 L11.5,10.5658653 Z M11.5,14.5536113 C12.879,14.5536113 14,13.4350485 14,12.0612701 C14,10.6864946 12.879,9.56892881 11.5,9.56892881 C10.122,9.56892881 9,10.6864946 9,12.0612701 C9,13.4350485 10.122,14.5536113 11.5,14.5536113 L11.5,14.5536113 Z M27.5,10.5658653 C28.328,10.5658653 29,11.2368036 29,12.0612701 C29,12.8857365 28.328,13.5566748 27.5,13.5566748 C26.673,13.5566748 26,12.8857365 26,12.0612701 C26,11.2368036 26.673,10.5658653 27.5,10.5658653 L27.5,10.5658653 Z M27.5,14.5536113 C28.879,14.5536113 30,13.4350485 30,12.0612701 C30,10.6864946 28.879,9.56892881 27.5,9.56892881 C26.122,9.56892881 25,10.6864946 25,12.0612701 C25,13.4350485 26.122,14.5536113 27.5,14.5536113 L27.5,14.5536113 Z M8.5,21.4534088 C7.673,21.4534088 7,20.7824705 7,19.9580041 C7,19.1335376 7.673,18.4625993 8.5,18.4625993 C9.328,18.4625993 10,19.1335376 10,19.9580041 C10,20.7824705 9.328,21.4534088 8.5,21.4534088 L8.5,21.4534088 Z M16.0020589,20.0228049 C16.004,19.8902124 15.955,19.7626045 15.862,19.6678955 L14.36,18.1166623 L13.641,18.8085363 L14.316,19.5063918 L10.955,19.5063918 C10.741,18.3479516 9.724,17.4656628 8.5,17.4656628 C7.122,17.4656628 6,18.5842256 6,19.9580041 C6,21.3327795 7.122,22.4503453 8.5,22.4503453 C9.691,22.4503453 10.685,21.6159094 10.936,20.5033283 L14.27,20.5033283 L13.654,21.0945117 L14.347,21.8133029 L15.849,20.3727296 C15.945,20.2810115 15.999,20.1553975 16.0020589,20.0228049 L16.0020589,20.0228049 Z M25.658,21.0905239 L26.284,20.5033283 L24,20.5033283 L24,19.5063918 L26.34,19.5063918 L25.647,18.8155148 L26.354,18.1106807 L27.901,19.6519445 C27.997,19.7476504 28.049,19.8772522 28.047,20.0118386 C28.045,20.147422 27.989,20.2750299 27.89,20.367745 L26.343,21.8162937 L25.658,21.0905239 Z M22.414,22.8222026 C21.664,22.5191339 20.841,22.3566333 20,22.3566333 C19.16,22.3566333 18.337,22.5191339 17.587,22.8222026 C18.255,21.0556311 18.255,18.8613739 17.587,17.0948024 C19.087,17.7009398 20.914,17.7009398 22.414,17.0948024 C21.746,18.8613739 21.746,21.0556311 22.414,22.8222026 L22.414,22.8222026 Z M24.354,15.8247053 C24.452,15.7270056 24.5,15.5993977 24.5,15.4717898 C24.5,15.3441819 24.452,15.2165741 24.354,15.1198712 C24.159,14.9244717 23.842,14.9244717 23.647,15.1198712 C22.727,16.0370528 21.398,16.5624383 20,16.5624383 C18.603,16.5624383 17.274,16.0370528 16.354,15.1198712 C16.159,14.9244717 15.842,14.9244717 15.647,15.1198712 C15.549,15.2165741 15.5,15.3441819 15.5,15.4717898 C15.5,15.5993977 15.549,15.7270056 15.647,15.8247053 C17.584,17.7557713 17.584,22.1602368 15.647,24.0922997 C15.549,24.1890025 15.5,24.3166104 15.5,24.4442183 C15.5,24.5718262 15.549,24.699434 15.647,24.7971338 C15.842,24.9915364 16.159,24.9915364 16.354,24.7971338 C17.274,23.8799522 18.603,23.3535698 20,23.3535698 C21.398,23.3535698 22.727,23.8799522 23.647,24.7971338 C23.745,24.8938366 23.872,24.9426865 24,24.9426865 C24.128,24.9426865 24.256,24.8938366 24.354,24.7971338 C24.452,24.699434 24.5,24.5718262 24.5,24.4442183 C24.5,24.3166104 24.452,24.1890025 24.354,24.0922997 C22.416,22.1602368 22.416,17.7557713 24.354,15.8247053 L24.354,15.8247053 Z\" id=\"Amazon-MQ-Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v0.0.36" + }, + "name": "aws-mq-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Streaming \u0026 Messaging", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#E7157B", + "shape": "rectangle", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-MQ_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath d=\"M9.726,25.2816449 L8.863,25.7860948 C8.458,25.0972117 8.119,24.3664572 7.854,23.6127732 L8.797,23.2827873 C9.041,23.9756581 9.354,24.6485903 9.726,25.2816449 L9.726,25.2816449 Z M8.824,16.6372086 L7.882,16.300244 C8.136,15.5984007 8.455,14.9135054 8.83,14.2644997 L9.696,14.762968 C9.35,15.3601329 9.057,15.9911937 8.824,16.6372086 L8.824,16.6372086 Z M14.99,9.99860844 L14.58,9.08940236 C17.826,7.63686588 21.626,7.63686588 24.872,9.08940236 L24.462,9.99860844 C21.478,8.66271354 17.974,8.66271354 14.99,9.99860844 L14.99,9.99860844 Z M29.756,14.762968 L30.622,14.2644997 C30.998,14.9164962 31.318,15.6013916 31.569,16.301241 L30.627,16.6372086 C30.396,15.9931876 30.103,15.3631237 29.756,14.762968 L29.756,14.762968 Z M30.655,23.2827873 L31.598,23.6127732 C31.341,24.3425308 31.013,25.0543434 30.622,25.7292694 L29.756,25.2308012 C30.116,24.6097097 30.418,23.9537255 30.655,23.2827873 L30.655,23.2827873 Z M24.462,29.9961576 L24.872,30.9053637 C23.248,31.6321304 21.517,32 19.726,32 C17.935,32 16.204,31.6321304 14.58,30.9053637 L14.99,29.9961576 C17.976,31.3320525 21.476,31.3320525 24.462,29.9961576 L24.462,29.9961576 Z M11.5,29.4289008 C10.673,29.4289008 10,28.7579625 10,27.933496 C10,27.1090295 10.673,26.4380913 11.5,26.4380913 C12.328,26.4380913 13,27.1090295 13,27.933496 C13,28.7579625 12.328,29.4289008 11.5,29.4289008 L11.5,29.4289008 Z M11.5,25.4411548 C10.122,25.4411548 9,26.5597175 9,27.933496 C9,29.3082715 10.122,30.4258373 11.5,30.4258373 C12.879,30.4258373 14,29.3082715 14,27.933496 C14,26.5597175 12.879,25.4411548 11.5,25.4411548 L11.5,25.4411548 Z M27.5,29.4289008 C26.673,29.4289008 26,28.7579625 26,27.933496 C26,27.1090295 26.673,26.4380913 27.5,26.4380913 C28.328,26.4380913 29,27.1090295 29,27.933496 C29,28.7579625 28.328,29.4289008 27.5,29.4289008 L27.5,29.4289008 Z M27.5,25.4411548 C26.122,25.4411548 25,26.5597175 25,27.933496 C25,29.3082715 26.122,30.4258373 27.5,30.4258373 C28.879,30.4258373 30,29.3082715 30,27.933496 C30,26.5597175 28.879,25.4411548 27.5,25.4411548 L27.5,25.4411548 Z M31.5,21.4534088 C30.673,21.4534088 30,20.7824705 30,19.9580041 C30,19.1335376 30.673,18.4625993 31.5,18.4625993 C32.328,18.4625993 33,19.1335376 33,19.9580041 C33,20.7824705 32.328,21.4534088 31.5,21.4534088 L31.5,21.4534088 Z M31.5,17.4656628 C30.122,17.4656628 29,18.5842256 29,19.9580041 C29,21.3327795 30.122,22.4503453 31.5,22.4503453 C32.879,22.4503453 34,21.3327795 34,19.9580041 C34,18.5842256 32.879,17.4656628 31.5,17.4656628 L31.5,17.4656628 Z M11.5,10.5658653 C12.328,10.5658653 13,11.2368036 13,12.0612701 C13,12.8857365 12.328,13.5566748 11.5,13.5566748 C10.673,13.5566748 10,12.8857365 10,12.0612701 C10,11.2368036 10.673,10.5658653 11.5,10.5658653 L11.5,10.5658653 Z M11.5,14.5536113 C12.879,14.5536113 14,13.4350485 14,12.0612701 C14,10.6864946 12.879,9.56892881 11.5,9.56892881 C10.122,9.56892881 9,10.6864946 9,12.0612701 C9,13.4350485 10.122,14.5536113 11.5,14.5536113 L11.5,14.5536113 Z M27.5,10.5658653 C28.328,10.5658653 29,11.2368036 29,12.0612701 C29,12.8857365 28.328,13.5566748 27.5,13.5566748 C26.673,13.5566748 26,12.8857365 26,12.0612701 C26,11.2368036 26.673,10.5658653 27.5,10.5658653 L27.5,10.5658653 Z M27.5,14.5536113 C28.879,14.5536113 30,13.4350485 30,12.0612701 C30,10.6864946 28.879,9.56892881 27.5,9.56892881 C26.122,9.56892881 25,10.6864946 25,12.0612701 C25,13.4350485 26.122,14.5536113 27.5,14.5536113 L27.5,14.5536113 Z M8.5,21.4534088 C7.673,21.4534088 7,20.7824705 7,19.9580041 C7,19.1335376 7.673,18.4625993 8.5,18.4625993 C9.328,18.4625993 10,19.1335376 10,19.9580041 C10,20.7824705 9.328,21.4534088 8.5,21.4534088 L8.5,21.4534088 Z M16.0020589,20.0228049 C16.004,19.8902124 15.955,19.7626045 15.862,19.6678955 L14.36,18.1166623 L13.641,18.8085363 L14.316,19.5063918 L10.955,19.5063918 C10.741,18.3479516 9.724,17.4656628 8.5,17.4656628 C7.122,17.4656628 6,18.5842256 6,19.9580041 C6,21.3327795 7.122,22.4503453 8.5,22.4503453 C9.691,22.4503453 10.685,21.6159094 10.936,20.5033283 L14.27,20.5033283 L13.654,21.0945117 L14.347,21.8133029 L15.849,20.3727296 C15.945,20.2810115 15.999,20.1553975 16.0020589,20.0228049 L16.0020589,20.0228049 Z M25.658,21.0905239 L26.284,20.5033283 L24,20.5033283 L24,19.5063918 L26.34,19.5063918 L25.647,18.8155148 L26.354,18.1106807 L27.901,19.6519445 C27.997,19.7476504 28.049,19.8772522 28.047,20.0118386 C28.045,20.147422 27.989,20.2750299 27.89,20.367745 L26.343,21.8162937 L25.658,21.0905239 Z M22.414,22.8222026 C21.664,22.5191339 20.841,22.3566333 20,22.3566333 C19.16,22.3566333 18.337,22.5191339 17.587,22.8222026 C18.255,21.0556311 18.255,18.8613739 17.587,17.0948024 C19.087,17.7009398 20.914,17.7009398 22.414,17.0948024 C21.746,18.8613739 21.746,21.0556311 22.414,22.8222026 L22.414,22.8222026 Z M24.354,15.8247053 C24.452,15.7270056 24.5,15.5993977 24.5,15.4717898 C24.5,15.3441819 24.452,15.2165741 24.354,15.1198712 C24.159,14.9244717 23.842,14.9244717 23.647,15.1198712 C22.727,16.0370528 21.398,16.5624383 20,16.5624383 C18.603,16.5624383 17.274,16.0370528 16.354,15.1198712 C16.159,14.9244717 15.842,14.9244717 15.647,15.1198712 C15.549,15.2165741 15.5,15.3441819 15.5,15.4717898 C15.5,15.5993977 15.549,15.7270056 15.647,15.8247053 C17.584,17.7557713 17.584,22.1602368 15.647,24.0922997 C15.549,24.1890025 15.5,24.3166104 15.5,24.4442183 C15.5,24.5718262 15.549,24.699434 15.647,24.7971338 C15.842,24.9915364 16.159,24.9915364 16.354,24.7971338 C17.274,23.8799522 18.603,23.3535698 20,23.3535698 C21.398,23.3535698 22.727,23.8799522 23.647,24.7971338 C23.745,24.8938366 23.872,24.9426865 24,24.9426865 C24.128,24.9426865 24.256,24.8938366 24.354,24.7971338 C24.452,24.699434 24.5,24.5718262 24.5,24.4442183 C24.5,24.3166104 24.452,24.1890025 24.354,24.0922997 C22.416,22.1602368 22.416,17.7557713 24.354,15.8247053 L24.354,15.8247053 Z\" id=\"Amazon-MQ-Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-MQ_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath d=\"M9.726,25.2816449 L8.863,25.7860948 C8.458,25.0972117 8.119,24.3664572 7.854,23.6127732 L8.797,23.2827873 C9.041,23.9756581 9.354,24.6485903 9.726,25.2816449 L9.726,25.2816449 Z M8.824,16.6372086 L7.882,16.300244 C8.136,15.5984007 8.455,14.9135054 8.83,14.2644997 L9.696,14.762968 C9.35,15.3601329 9.057,15.9911937 8.824,16.6372086 L8.824,16.6372086 Z M14.99,9.99860844 L14.58,9.08940236 C17.826,7.63686588 21.626,7.63686588 24.872,9.08940236 L24.462,9.99860844 C21.478,8.66271354 17.974,8.66271354 14.99,9.99860844 L14.99,9.99860844 Z M29.756,14.762968 L30.622,14.2644997 C30.998,14.9164962 31.318,15.6013916 31.569,16.301241 L30.627,16.6372086 C30.396,15.9931876 30.103,15.3631237 29.756,14.762968 L29.756,14.762968 Z M30.655,23.2827873 L31.598,23.6127732 C31.341,24.3425308 31.013,25.0543434 30.622,25.7292694 L29.756,25.2308012 C30.116,24.6097097 30.418,23.9537255 30.655,23.2827873 L30.655,23.2827873 Z M24.462,29.9961576 L24.872,30.9053637 C23.248,31.6321304 21.517,32 19.726,32 C17.935,32 16.204,31.6321304 14.58,30.9053637 L14.99,29.9961576 C17.976,31.3320525 21.476,31.3320525 24.462,29.9961576 L24.462,29.9961576 Z M11.5,29.4289008 C10.673,29.4289008 10,28.7579625 10,27.933496 C10,27.1090295 10.673,26.4380913 11.5,26.4380913 C12.328,26.4380913 13,27.1090295 13,27.933496 C13,28.7579625 12.328,29.4289008 11.5,29.4289008 L11.5,29.4289008 Z M11.5,25.4411548 C10.122,25.4411548 9,26.5597175 9,27.933496 C9,29.3082715 10.122,30.4258373 11.5,30.4258373 C12.879,30.4258373 14,29.3082715 14,27.933496 C14,26.5597175 12.879,25.4411548 11.5,25.4411548 L11.5,25.4411548 Z M27.5,29.4289008 C26.673,29.4289008 26,28.7579625 26,27.933496 C26,27.1090295 26.673,26.4380913 27.5,26.4380913 C28.328,26.4380913 29,27.1090295 29,27.933496 C29,28.7579625 28.328,29.4289008 27.5,29.4289008 L27.5,29.4289008 Z M27.5,25.4411548 C26.122,25.4411548 25,26.5597175 25,27.933496 C25,29.3082715 26.122,30.4258373 27.5,30.4258373 C28.879,30.4258373 30,29.3082715 30,27.933496 C30,26.5597175 28.879,25.4411548 27.5,25.4411548 L27.5,25.4411548 Z M31.5,21.4534088 C30.673,21.4534088 30,20.7824705 30,19.9580041 C30,19.1335376 30.673,18.4625993 31.5,18.4625993 C32.328,18.4625993 33,19.1335376 33,19.9580041 C33,20.7824705 32.328,21.4534088 31.5,21.4534088 L31.5,21.4534088 Z M31.5,17.4656628 C30.122,17.4656628 29,18.5842256 29,19.9580041 C29,21.3327795 30.122,22.4503453 31.5,22.4503453 C32.879,22.4503453 34,21.3327795 34,19.9580041 C34,18.5842256 32.879,17.4656628 31.5,17.4656628 L31.5,17.4656628 Z M11.5,10.5658653 C12.328,10.5658653 13,11.2368036 13,12.0612701 C13,12.8857365 12.328,13.5566748 11.5,13.5566748 C10.673,13.5566748 10,12.8857365 10,12.0612701 C10,11.2368036 10.673,10.5658653 11.5,10.5658653 L11.5,10.5658653 Z M11.5,14.5536113 C12.879,14.5536113 14,13.4350485 14,12.0612701 C14,10.6864946 12.879,9.56892881 11.5,9.56892881 C10.122,9.56892881 9,10.6864946 9,12.0612701 C9,13.4350485 10.122,14.5536113 11.5,14.5536113 L11.5,14.5536113 Z M27.5,10.5658653 C28.328,10.5658653 29,11.2368036 29,12.0612701 C29,12.8857365 28.328,13.5566748 27.5,13.5566748 C26.673,13.5566748 26,12.8857365 26,12.0612701 C26,11.2368036 26.673,10.5658653 27.5,10.5658653 L27.5,10.5658653 Z M27.5,14.5536113 C28.879,14.5536113 30,13.4350485 30,12.0612701 C30,10.6864946 28.879,9.56892881 27.5,9.56892881 C26.122,9.56892881 25,10.6864946 25,12.0612701 C25,13.4350485 26.122,14.5536113 27.5,14.5536113 L27.5,14.5536113 Z M8.5,21.4534088 C7.673,21.4534088 7,20.7824705 7,19.9580041 C7,19.1335376 7.673,18.4625993 8.5,18.4625993 C9.328,18.4625993 10,19.1335376 10,19.9580041 C10,20.7824705 9.328,21.4534088 8.5,21.4534088 L8.5,21.4534088 Z M16.0020589,20.0228049 C16.004,19.8902124 15.955,19.7626045 15.862,19.6678955 L14.36,18.1166623 L13.641,18.8085363 L14.316,19.5063918 L10.955,19.5063918 C10.741,18.3479516 9.724,17.4656628 8.5,17.4656628 C7.122,17.4656628 6,18.5842256 6,19.9580041 C6,21.3327795 7.122,22.4503453 8.5,22.4503453 C9.691,22.4503453 10.685,21.6159094 10.936,20.5033283 L14.27,20.5033283 L13.654,21.0945117 L14.347,21.8133029 L15.849,20.3727296 C15.945,20.2810115 15.999,20.1553975 16.0020589,20.0228049 L16.0020589,20.0228049 Z M25.658,21.0905239 L26.284,20.5033283 L24,20.5033283 L24,19.5063918 L26.34,19.5063918 L25.647,18.8155148 L26.354,18.1106807 L27.901,19.6519445 C27.997,19.7476504 28.049,19.8772522 28.047,20.0118386 C28.045,20.147422 27.989,20.2750299 27.89,20.367745 L26.343,21.8162937 L25.658,21.0905239 Z M22.414,22.8222026 C21.664,22.5191339 20.841,22.3566333 20,22.3566333 C19.16,22.3566333 18.337,22.5191339 17.587,22.8222026 C18.255,21.0556311 18.255,18.8613739 17.587,17.0948024 C19.087,17.7009398 20.914,17.7009398 22.414,17.0948024 C21.746,18.8613739 21.746,21.0556311 22.414,22.8222026 L22.414,22.8222026 Z M24.354,15.8247053 C24.452,15.7270056 24.5,15.5993977 24.5,15.4717898 C24.5,15.3441819 24.452,15.2165741 24.354,15.1198712 C24.159,14.9244717 23.842,14.9244717 23.647,15.1198712 C22.727,16.0370528 21.398,16.5624383 20,16.5624383 C18.603,16.5624383 17.274,16.0370528 16.354,15.1198712 C16.159,14.9244717 15.842,14.9244717 15.647,15.1198712 C15.549,15.2165741 15.5,15.3441819 15.5,15.4717898 C15.5,15.5993977 15.549,15.7270056 15.647,15.8247053 C17.584,17.7557713 17.584,22.1602368 15.647,24.0922997 C15.549,24.1890025 15.5,24.3166104 15.5,24.4442183 C15.5,24.5718262 15.549,24.699434 15.647,24.7971338 C15.842,24.9915364 16.159,24.9915364 16.354,24.7971338 C17.274,23.8799522 18.603,23.3535698 20,23.3535698 C21.398,23.3535698 22.727,23.8799522 23.647,24.7971338 C23.745,24.8938366 23.872,24.9426865 24,24.9426865 C24.128,24.9426865 24.256,24.8938366 24.354,24.7971338 C24.452,24.699434 24.5,24.5718262 24.5,24.4442183 C24.5,24.3166104 24.452,24.1890025 24.354,24.0922997 C22.416,22.1602368 22.416,17.7557713 24.354,15.8247053 L24.354,15.8247053 Z\" id=\"Amazon-MQ-Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-mq-controller/v0.0.36/v1.0.0/components/FieldExport.json b/server/meshmodel/aws-mq-controller/v0.0.36/v1.0.0/components/FieldExport.json new file mode 100644 index 00000000000..30bfd56802b --- /dev/null +++ b/server/meshmodel/aws-mq-controller/v0.0.36/v1.0.0/components/FieldExport.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "FieldExport", + "schema": "{\n \"description\": \"FieldExport is the schema for the FieldExport API.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"FieldExportSpec defines the desired state of the FieldExport.\",\n \"properties\": {\n \"from\": {\n \"description\": \"ResourceFieldSelector provides the values necessary to identify an individual\\nfield on an individual K8s resource.\",\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"resource\": {\n \"description\": \"NamespacedResource provides all the values necessary to identify an ACK\\nresource of a given type (within the same namespace as the custom resource\\ncontaining this type).\",\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"group\",\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"path\",\n \"resource\"\n ],\n \"type\": \"object\"\n },\n \"to\": {\n \"description\": \"FieldExportTarget provides the values necessary to identify the\\noutput path for a field export.\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key overrides the default value (`\\u003cnamespace\\u003e.\\u003cFieldExport-resource-name\\u003e`) for the FieldExport target\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"FieldExportOutputType represents all types that can be produced by a field\\nexport operation\",\n \"enum\": [\n \"configmap\",\n \"secret\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is marked as optional, so we cannot compose `NamespacedName`\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"from\",\n \"to\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Field Export\",\n \"type\": \"object\"\n}", + "version": "services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Field Export", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/mq-controller/main/helm" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "AWS MQ", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#E7157B", + "shape": "rectangle", + "source_uri": "git://github.com/aws-controllers-k8s/mq-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MQ_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.726,25.2816449 L8.863,25.7860948 C8.458,25.0972117 8.119,24.3664572 7.854,23.6127732 L8.797,23.2827873 C9.041,23.9756581 9.354,24.6485903 9.726,25.2816449 L9.726,25.2816449 Z M8.824,16.6372086 L7.882,16.300244 C8.136,15.5984007 8.455,14.9135054 8.83,14.2644997 L9.696,14.762968 C9.35,15.3601329 9.057,15.9911937 8.824,16.6372086 L8.824,16.6372086 Z M14.99,9.99860844 L14.58,9.08940236 C17.826,7.63686588 21.626,7.63686588 24.872,9.08940236 L24.462,9.99860844 C21.478,8.66271354 17.974,8.66271354 14.99,9.99860844 L14.99,9.99860844 Z M29.756,14.762968 L30.622,14.2644997 C30.998,14.9164962 31.318,15.6013916 31.569,16.301241 L30.627,16.6372086 C30.396,15.9931876 30.103,15.3631237 29.756,14.762968 L29.756,14.762968 Z M30.655,23.2827873 L31.598,23.6127732 C31.341,24.3425308 31.013,25.0543434 30.622,25.7292694 L29.756,25.2308012 C30.116,24.6097097 30.418,23.9537255 30.655,23.2827873 L30.655,23.2827873 Z M24.462,29.9961576 L24.872,30.9053637 C23.248,31.6321304 21.517,32 19.726,32 C17.935,32 16.204,31.6321304 14.58,30.9053637 L14.99,29.9961576 C17.976,31.3320525 21.476,31.3320525 24.462,29.9961576 L24.462,29.9961576 Z M11.5,29.4289008 C10.673,29.4289008 10,28.7579625 10,27.933496 C10,27.1090295 10.673,26.4380913 11.5,26.4380913 C12.328,26.4380913 13,27.1090295 13,27.933496 C13,28.7579625 12.328,29.4289008 11.5,29.4289008 L11.5,29.4289008 Z M11.5,25.4411548 C10.122,25.4411548 9,26.5597175 9,27.933496 C9,29.3082715 10.122,30.4258373 11.5,30.4258373 C12.879,30.4258373 14,29.3082715 14,27.933496 C14,26.5597175 12.879,25.4411548 11.5,25.4411548 L11.5,25.4411548 Z M27.5,29.4289008 C26.673,29.4289008 26,28.7579625 26,27.933496 C26,27.1090295 26.673,26.4380913 27.5,26.4380913 C28.328,26.4380913 29,27.1090295 29,27.933496 C29,28.7579625 28.328,29.4289008 27.5,29.4289008 L27.5,29.4289008 Z M27.5,25.4411548 C26.122,25.4411548 25,26.5597175 25,27.933496 C25,29.3082715 26.122,30.4258373 27.5,30.4258373 C28.879,30.4258373 30,29.3082715 30,27.933496 C30,26.5597175 28.879,25.4411548 27.5,25.4411548 L27.5,25.4411548 Z M31.5,21.4534088 C30.673,21.4534088 30,20.7824705 30,19.9580041 C30,19.1335376 30.673,18.4625993 31.5,18.4625993 C32.328,18.4625993 33,19.1335376 33,19.9580041 C33,20.7824705 32.328,21.4534088 31.5,21.4534088 L31.5,21.4534088 Z M31.5,17.4656628 C30.122,17.4656628 29,18.5842256 29,19.9580041 C29,21.3327795 30.122,22.4503453 31.5,22.4503453 C32.879,22.4503453 34,21.3327795 34,19.9580041 C34,18.5842256 32.879,17.4656628 31.5,17.4656628 L31.5,17.4656628 Z M11.5,10.5658653 C12.328,10.5658653 13,11.2368036 13,12.0612701 C13,12.8857365 12.328,13.5566748 11.5,13.5566748 C10.673,13.5566748 10,12.8857365 10,12.0612701 C10,11.2368036 10.673,10.5658653 11.5,10.5658653 L11.5,10.5658653 Z M11.5,14.5536113 C12.879,14.5536113 14,13.4350485 14,12.0612701 C14,10.6864946 12.879,9.56892881 11.5,9.56892881 C10.122,9.56892881 9,10.6864946 9,12.0612701 C9,13.4350485 10.122,14.5536113 11.5,14.5536113 L11.5,14.5536113 Z M27.5,10.5658653 C28.328,10.5658653 29,11.2368036 29,12.0612701 C29,12.8857365 28.328,13.5566748 27.5,13.5566748 C26.673,13.5566748 26,12.8857365 26,12.0612701 C26,11.2368036 26.673,10.5658653 27.5,10.5658653 L27.5,10.5658653 Z M27.5,14.5536113 C28.879,14.5536113 30,13.4350485 30,12.0612701 C30,10.6864946 28.879,9.56892881 27.5,9.56892881 C26.122,9.56892881 25,10.6864946 25,12.0612701 C25,13.4350485 26.122,14.5536113 27.5,14.5536113 L27.5,14.5536113 Z M8.5,21.4534088 C7.673,21.4534088 7,20.7824705 7,19.9580041 C7,19.1335376 7.673,18.4625993 8.5,18.4625993 C9.328,18.4625993 10,19.1335376 10,19.9580041 C10,20.7824705 9.328,21.4534088 8.5,21.4534088 L8.5,21.4534088 Z M16.0020589,20.0228049 C16.004,19.8902124 15.955,19.7626045 15.862,19.6678955 L14.36,18.1166623 L13.641,18.8085363 L14.316,19.5063918 L10.955,19.5063918 C10.741,18.3479516 9.724,17.4656628 8.5,17.4656628 C7.122,17.4656628 6,18.5842256 6,19.9580041 C6,21.3327795 7.122,22.4503453 8.5,22.4503453 C9.691,22.4503453 10.685,21.6159094 10.936,20.5033283 L14.27,20.5033283 L13.654,21.0945117 L14.347,21.8133029 L15.849,20.3727296 C15.945,20.2810115 15.999,20.1553975 16.0020589,20.0228049 L16.0020589,20.0228049 Z M25.658,21.0905239 L26.284,20.5033283 L24,20.5033283 L24,19.5063918 L26.34,19.5063918 L25.647,18.8155148 L26.354,18.1106807 L27.901,19.6519445 C27.997,19.7476504 28.049,19.8772522 28.047,20.0118386 C28.045,20.147422 27.989,20.2750299 27.89,20.367745 L26.343,21.8162937 L25.658,21.0905239 Z M22.414,22.8222026 C21.664,22.5191339 20.841,22.3566333 20,22.3566333 C19.16,22.3566333 18.337,22.5191339 17.587,22.8222026 C18.255,21.0556311 18.255,18.8613739 17.587,17.0948024 C19.087,17.7009398 20.914,17.7009398 22.414,17.0948024 C21.746,18.8613739 21.746,21.0556311 22.414,22.8222026 L22.414,22.8222026 Z M24.354,15.8247053 C24.452,15.7270056 24.5,15.5993977 24.5,15.4717898 C24.5,15.3441819 24.452,15.2165741 24.354,15.1198712 C24.159,14.9244717 23.842,14.9244717 23.647,15.1198712 C22.727,16.0370528 21.398,16.5624383 20,16.5624383 C18.603,16.5624383 17.274,16.0370528 16.354,15.1198712 C16.159,14.9244717 15.842,14.9244717 15.647,15.1198712 C15.549,15.2165741 15.5,15.3441819 15.5,15.4717898 C15.5,15.5993977 15.549,15.7270056 15.647,15.8247053 C17.584,17.7557713 17.584,22.1602368 15.647,24.0922997 C15.549,24.1890025 15.5,24.3166104 15.5,24.4442183 C15.5,24.5718262 15.549,24.699434 15.647,24.7971338 C15.842,24.9915364 16.159,24.9915364 16.354,24.7971338 C17.274,23.8799522 18.603,23.3535698 20,23.3535698 C21.398,23.3535698 22.727,23.8799522 23.647,24.7971338 C23.745,24.8938366 23.872,24.9426865 24,24.9426865 C24.128,24.9426865 24.256,24.8938366 24.354,24.7971338 C24.452,24.699434 24.5,24.5718262 24.5,24.4442183 C24.5,24.3166104 24.452,24.1890025 24.354,24.0922997 C22.416,22.1602368 22.416,17.7557713 24.354,15.8247053 L24.354,15.8247053 Z\" id=\"Amazon-MQ-Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MQ_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.726,25.2816449 L8.863,25.7860948 C8.458,25.0972117 8.119,24.3664572 7.854,23.6127732 L8.797,23.2827873 C9.041,23.9756581 9.354,24.6485903 9.726,25.2816449 L9.726,25.2816449 Z M8.824,16.6372086 L7.882,16.300244 C8.136,15.5984007 8.455,14.9135054 8.83,14.2644997 L9.696,14.762968 C9.35,15.3601329 9.057,15.9911937 8.824,16.6372086 L8.824,16.6372086 Z M14.99,9.99860844 L14.58,9.08940236 C17.826,7.63686588 21.626,7.63686588 24.872,9.08940236 L24.462,9.99860844 C21.478,8.66271354 17.974,8.66271354 14.99,9.99860844 L14.99,9.99860844 Z M29.756,14.762968 L30.622,14.2644997 C30.998,14.9164962 31.318,15.6013916 31.569,16.301241 L30.627,16.6372086 C30.396,15.9931876 30.103,15.3631237 29.756,14.762968 L29.756,14.762968 Z M30.655,23.2827873 L31.598,23.6127732 C31.341,24.3425308 31.013,25.0543434 30.622,25.7292694 L29.756,25.2308012 C30.116,24.6097097 30.418,23.9537255 30.655,23.2827873 L30.655,23.2827873 Z M24.462,29.9961576 L24.872,30.9053637 C23.248,31.6321304 21.517,32 19.726,32 C17.935,32 16.204,31.6321304 14.58,30.9053637 L14.99,29.9961576 C17.976,31.3320525 21.476,31.3320525 24.462,29.9961576 L24.462,29.9961576 Z M11.5,29.4289008 C10.673,29.4289008 10,28.7579625 10,27.933496 C10,27.1090295 10.673,26.4380913 11.5,26.4380913 C12.328,26.4380913 13,27.1090295 13,27.933496 C13,28.7579625 12.328,29.4289008 11.5,29.4289008 L11.5,29.4289008 Z M11.5,25.4411548 C10.122,25.4411548 9,26.5597175 9,27.933496 C9,29.3082715 10.122,30.4258373 11.5,30.4258373 C12.879,30.4258373 14,29.3082715 14,27.933496 C14,26.5597175 12.879,25.4411548 11.5,25.4411548 L11.5,25.4411548 Z M27.5,29.4289008 C26.673,29.4289008 26,28.7579625 26,27.933496 C26,27.1090295 26.673,26.4380913 27.5,26.4380913 C28.328,26.4380913 29,27.1090295 29,27.933496 C29,28.7579625 28.328,29.4289008 27.5,29.4289008 L27.5,29.4289008 Z M27.5,25.4411548 C26.122,25.4411548 25,26.5597175 25,27.933496 C25,29.3082715 26.122,30.4258373 27.5,30.4258373 C28.879,30.4258373 30,29.3082715 30,27.933496 C30,26.5597175 28.879,25.4411548 27.5,25.4411548 L27.5,25.4411548 Z M31.5,21.4534088 C30.673,21.4534088 30,20.7824705 30,19.9580041 C30,19.1335376 30.673,18.4625993 31.5,18.4625993 C32.328,18.4625993 33,19.1335376 33,19.9580041 C33,20.7824705 32.328,21.4534088 31.5,21.4534088 L31.5,21.4534088 Z M31.5,17.4656628 C30.122,17.4656628 29,18.5842256 29,19.9580041 C29,21.3327795 30.122,22.4503453 31.5,22.4503453 C32.879,22.4503453 34,21.3327795 34,19.9580041 C34,18.5842256 32.879,17.4656628 31.5,17.4656628 L31.5,17.4656628 Z M11.5,10.5658653 C12.328,10.5658653 13,11.2368036 13,12.0612701 C13,12.8857365 12.328,13.5566748 11.5,13.5566748 C10.673,13.5566748 10,12.8857365 10,12.0612701 C10,11.2368036 10.673,10.5658653 11.5,10.5658653 L11.5,10.5658653 Z M11.5,14.5536113 C12.879,14.5536113 14,13.4350485 14,12.0612701 C14,10.6864946 12.879,9.56892881 11.5,9.56892881 C10.122,9.56892881 9,10.6864946 9,12.0612701 C9,13.4350485 10.122,14.5536113 11.5,14.5536113 L11.5,14.5536113 Z M27.5,10.5658653 C28.328,10.5658653 29,11.2368036 29,12.0612701 C29,12.8857365 28.328,13.5566748 27.5,13.5566748 C26.673,13.5566748 26,12.8857365 26,12.0612701 C26,11.2368036 26.673,10.5658653 27.5,10.5658653 L27.5,10.5658653 Z M27.5,14.5536113 C28.879,14.5536113 30,13.4350485 30,12.0612701 C30,10.6864946 28.879,9.56892881 27.5,9.56892881 C26.122,9.56892881 25,10.6864946 25,12.0612701 C25,13.4350485 26.122,14.5536113 27.5,14.5536113 L27.5,14.5536113 Z M8.5,21.4534088 C7.673,21.4534088 7,20.7824705 7,19.9580041 C7,19.1335376 7.673,18.4625993 8.5,18.4625993 C9.328,18.4625993 10,19.1335376 10,19.9580041 C10,20.7824705 9.328,21.4534088 8.5,21.4534088 L8.5,21.4534088 Z M16.0020589,20.0228049 C16.004,19.8902124 15.955,19.7626045 15.862,19.6678955 L14.36,18.1166623 L13.641,18.8085363 L14.316,19.5063918 L10.955,19.5063918 C10.741,18.3479516 9.724,17.4656628 8.5,17.4656628 C7.122,17.4656628 6,18.5842256 6,19.9580041 C6,21.3327795 7.122,22.4503453 8.5,22.4503453 C9.691,22.4503453 10.685,21.6159094 10.936,20.5033283 L14.27,20.5033283 L13.654,21.0945117 L14.347,21.8133029 L15.849,20.3727296 C15.945,20.2810115 15.999,20.1553975 16.0020589,20.0228049 L16.0020589,20.0228049 Z M25.658,21.0905239 L26.284,20.5033283 L24,20.5033283 L24,19.5063918 L26.34,19.5063918 L25.647,18.8155148 L26.354,18.1106807 L27.901,19.6519445 C27.997,19.7476504 28.049,19.8772522 28.047,20.0118386 C28.045,20.147422 27.989,20.2750299 27.89,20.367745 L26.343,21.8162937 L25.658,21.0905239 Z M22.414,22.8222026 C21.664,22.5191339 20.841,22.3566333 20,22.3566333 C19.16,22.3566333 18.337,22.5191339 17.587,22.8222026 C18.255,21.0556311 18.255,18.8613739 17.587,17.0948024 C19.087,17.7009398 20.914,17.7009398 22.414,17.0948024 C21.746,18.8613739 21.746,21.0556311 22.414,22.8222026 L22.414,22.8222026 Z M24.354,15.8247053 C24.452,15.7270056 24.5,15.5993977 24.5,15.4717898 C24.5,15.3441819 24.452,15.2165741 24.354,15.1198712 C24.159,14.9244717 23.842,14.9244717 23.647,15.1198712 C22.727,16.0370528 21.398,16.5624383 20,16.5624383 C18.603,16.5624383 17.274,16.0370528 16.354,15.1198712 C16.159,14.9244717 15.842,14.9244717 15.647,15.1198712 C15.549,15.2165741 15.5,15.3441819 15.5,15.4717898 C15.5,15.5993977 15.549,15.7270056 15.647,15.8247053 C17.584,17.7557713 17.584,22.1602368 15.647,24.0922997 C15.549,24.1890025 15.5,24.3166104 15.5,24.4442183 C15.5,24.5718262 15.549,24.699434 15.647,24.7971338 C15.842,24.9915364 16.159,24.9915364 16.354,24.7971338 C17.274,23.8799522 18.603,23.3535698 20,23.3535698 C21.398,23.3535698 22.727,23.8799522 23.647,24.7971338 C23.745,24.8938366 23.872,24.9426865 24,24.9426865 C24.128,24.9426865 24.256,24.8938366 24.354,24.7971338 C24.452,24.699434 24.5,24.5718262 24.5,24.4442183 C24.5,24.3166104 24.452,24.1890025 24.354,24.0922997 C22.416,22.1602368 22.416,17.7557713 24.354,15.8247053 L24.354,15.8247053 Z\" id=\"Amazon-MQ-Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v0.0.36" + }, + "name": "aws-mq-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Streaming \u0026 Messaging", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#E7157B", + "shape": "rectangle", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-MQ_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath d=\"M9.726,25.2816449 L8.863,25.7860948 C8.458,25.0972117 8.119,24.3664572 7.854,23.6127732 L8.797,23.2827873 C9.041,23.9756581 9.354,24.6485903 9.726,25.2816449 L9.726,25.2816449 Z M8.824,16.6372086 L7.882,16.300244 C8.136,15.5984007 8.455,14.9135054 8.83,14.2644997 L9.696,14.762968 C9.35,15.3601329 9.057,15.9911937 8.824,16.6372086 L8.824,16.6372086 Z M14.99,9.99860844 L14.58,9.08940236 C17.826,7.63686588 21.626,7.63686588 24.872,9.08940236 L24.462,9.99860844 C21.478,8.66271354 17.974,8.66271354 14.99,9.99860844 L14.99,9.99860844 Z M29.756,14.762968 L30.622,14.2644997 C30.998,14.9164962 31.318,15.6013916 31.569,16.301241 L30.627,16.6372086 C30.396,15.9931876 30.103,15.3631237 29.756,14.762968 L29.756,14.762968 Z M30.655,23.2827873 L31.598,23.6127732 C31.341,24.3425308 31.013,25.0543434 30.622,25.7292694 L29.756,25.2308012 C30.116,24.6097097 30.418,23.9537255 30.655,23.2827873 L30.655,23.2827873 Z M24.462,29.9961576 L24.872,30.9053637 C23.248,31.6321304 21.517,32 19.726,32 C17.935,32 16.204,31.6321304 14.58,30.9053637 L14.99,29.9961576 C17.976,31.3320525 21.476,31.3320525 24.462,29.9961576 L24.462,29.9961576 Z M11.5,29.4289008 C10.673,29.4289008 10,28.7579625 10,27.933496 C10,27.1090295 10.673,26.4380913 11.5,26.4380913 C12.328,26.4380913 13,27.1090295 13,27.933496 C13,28.7579625 12.328,29.4289008 11.5,29.4289008 L11.5,29.4289008 Z M11.5,25.4411548 C10.122,25.4411548 9,26.5597175 9,27.933496 C9,29.3082715 10.122,30.4258373 11.5,30.4258373 C12.879,30.4258373 14,29.3082715 14,27.933496 C14,26.5597175 12.879,25.4411548 11.5,25.4411548 L11.5,25.4411548 Z M27.5,29.4289008 C26.673,29.4289008 26,28.7579625 26,27.933496 C26,27.1090295 26.673,26.4380913 27.5,26.4380913 C28.328,26.4380913 29,27.1090295 29,27.933496 C29,28.7579625 28.328,29.4289008 27.5,29.4289008 L27.5,29.4289008 Z M27.5,25.4411548 C26.122,25.4411548 25,26.5597175 25,27.933496 C25,29.3082715 26.122,30.4258373 27.5,30.4258373 C28.879,30.4258373 30,29.3082715 30,27.933496 C30,26.5597175 28.879,25.4411548 27.5,25.4411548 L27.5,25.4411548 Z M31.5,21.4534088 C30.673,21.4534088 30,20.7824705 30,19.9580041 C30,19.1335376 30.673,18.4625993 31.5,18.4625993 C32.328,18.4625993 33,19.1335376 33,19.9580041 C33,20.7824705 32.328,21.4534088 31.5,21.4534088 L31.5,21.4534088 Z M31.5,17.4656628 C30.122,17.4656628 29,18.5842256 29,19.9580041 C29,21.3327795 30.122,22.4503453 31.5,22.4503453 C32.879,22.4503453 34,21.3327795 34,19.9580041 C34,18.5842256 32.879,17.4656628 31.5,17.4656628 L31.5,17.4656628 Z M11.5,10.5658653 C12.328,10.5658653 13,11.2368036 13,12.0612701 C13,12.8857365 12.328,13.5566748 11.5,13.5566748 C10.673,13.5566748 10,12.8857365 10,12.0612701 C10,11.2368036 10.673,10.5658653 11.5,10.5658653 L11.5,10.5658653 Z M11.5,14.5536113 C12.879,14.5536113 14,13.4350485 14,12.0612701 C14,10.6864946 12.879,9.56892881 11.5,9.56892881 C10.122,9.56892881 9,10.6864946 9,12.0612701 C9,13.4350485 10.122,14.5536113 11.5,14.5536113 L11.5,14.5536113 Z M27.5,10.5658653 C28.328,10.5658653 29,11.2368036 29,12.0612701 C29,12.8857365 28.328,13.5566748 27.5,13.5566748 C26.673,13.5566748 26,12.8857365 26,12.0612701 C26,11.2368036 26.673,10.5658653 27.5,10.5658653 L27.5,10.5658653 Z M27.5,14.5536113 C28.879,14.5536113 30,13.4350485 30,12.0612701 C30,10.6864946 28.879,9.56892881 27.5,9.56892881 C26.122,9.56892881 25,10.6864946 25,12.0612701 C25,13.4350485 26.122,14.5536113 27.5,14.5536113 L27.5,14.5536113 Z M8.5,21.4534088 C7.673,21.4534088 7,20.7824705 7,19.9580041 C7,19.1335376 7.673,18.4625993 8.5,18.4625993 C9.328,18.4625993 10,19.1335376 10,19.9580041 C10,20.7824705 9.328,21.4534088 8.5,21.4534088 L8.5,21.4534088 Z M16.0020589,20.0228049 C16.004,19.8902124 15.955,19.7626045 15.862,19.6678955 L14.36,18.1166623 L13.641,18.8085363 L14.316,19.5063918 L10.955,19.5063918 C10.741,18.3479516 9.724,17.4656628 8.5,17.4656628 C7.122,17.4656628 6,18.5842256 6,19.9580041 C6,21.3327795 7.122,22.4503453 8.5,22.4503453 C9.691,22.4503453 10.685,21.6159094 10.936,20.5033283 L14.27,20.5033283 L13.654,21.0945117 L14.347,21.8133029 L15.849,20.3727296 C15.945,20.2810115 15.999,20.1553975 16.0020589,20.0228049 L16.0020589,20.0228049 Z M25.658,21.0905239 L26.284,20.5033283 L24,20.5033283 L24,19.5063918 L26.34,19.5063918 L25.647,18.8155148 L26.354,18.1106807 L27.901,19.6519445 C27.997,19.7476504 28.049,19.8772522 28.047,20.0118386 C28.045,20.147422 27.989,20.2750299 27.89,20.367745 L26.343,21.8162937 L25.658,21.0905239 Z M22.414,22.8222026 C21.664,22.5191339 20.841,22.3566333 20,22.3566333 C19.16,22.3566333 18.337,22.5191339 17.587,22.8222026 C18.255,21.0556311 18.255,18.8613739 17.587,17.0948024 C19.087,17.7009398 20.914,17.7009398 22.414,17.0948024 C21.746,18.8613739 21.746,21.0556311 22.414,22.8222026 L22.414,22.8222026 Z M24.354,15.8247053 C24.452,15.7270056 24.5,15.5993977 24.5,15.4717898 C24.5,15.3441819 24.452,15.2165741 24.354,15.1198712 C24.159,14.9244717 23.842,14.9244717 23.647,15.1198712 C22.727,16.0370528 21.398,16.5624383 20,16.5624383 C18.603,16.5624383 17.274,16.0370528 16.354,15.1198712 C16.159,14.9244717 15.842,14.9244717 15.647,15.1198712 C15.549,15.2165741 15.5,15.3441819 15.5,15.4717898 C15.5,15.5993977 15.549,15.7270056 15.647,15.8247053 C17.584,17.7557713 17.584,22.1602368 15.647,24.0922997 C15.549,24.1890025 15.5,24.3166104 15.5,24.4442183 C15.5,24.5718262 15.549,24.699434 15.647,24.7971338 C15.842,24.9915364 16.159,24.9915364 16.354,24.7971338 C17.274,23.8799522 18.603,23.3535698 20,23.3535698 C21.398,23.3535698 22.727,23.8799522 23.647,24.7971338 C23.745,24.8938366 23.872,24.9426865 24,24.9426865 C24.128,24.9426865 24.256,24.8938366 24.354,24.7971338 C24.452,24.699434 24.5,24.5718262 24.5,24.4442183 C24.5,24.3166104 24.452,24.1890025 24.354,24.0922997 C22.416,22.1602368 22.416,17.7557713 24.354,15.8247053 L24.354,15.8247053 Z\" id=\"Amazon-MQ-Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_Amazon-MQ_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath d=\"M9.726,25.2816449 L8.863,25.7860948 C8.458,25.0972117 8.119,24.3664572 7.854,23.6127732 L8.797,23.2827873 C9.041,23.9756581 9.354,24.6485903 9.726,25.2816449 L9.726,25.2816449 Z M8.824,16.6372086 L7.882,16.300244 C8.136,15.5984007 8.455,14.9135054 8.83,14.2644997 L9.696,14.762968 C9.35,15.3601329 9.057,15.9911937 8.824,16.6372086 L8.824,16.6372086 Z M14.99,9.99860844 L14.58,9.08940236 C17.826,7.63686588 21.626,7.63686588 24.872,9.08940236 L24.462,9.99860844 C21.478,8.66271354 17.974,8.66271354 14.99,9.99860844 L14.99,9.99860844 Z M29.756,14.762968 L30.622,14.2644997 C30.998,14.9164962 31.318,15.6013916 31.569,16.301241 L30.627,16.6372086 C30.396,15.9931876 30.103,15.3631237 29.756,14.762968 L29.756,14.762968 Z M30.655,23.2827873 L31.598,23.6127732 C31.341,24.3425308 31.013,25.0543434 30.622,25.7292694 L29.756,25.2308012 C30.116,24.6097097 30.418,23.9537255 30.655,23.2827873 L30.655,23.2827873 Z M24.462,29.9961576 L24.872,30.9053637 C23.248,31.6321304 21.517,32 19.726,32 C17.935,32 16.204,31.6321304 14.58,30.9053637 L14.99,29.9961576 C17.976,31.3320525 21.476,31.3320525 24.462,29.9961576 L24.462,29.9961576 Z M11.5,29.4289008 C10.673,29.4289008 10,28.7579625 10,27.933496 C10,27.1090295 10.673,26.4380913 11.5,26.4380913 C12.328,26.4380913 13,27.1090295 13,27.933496 C13,28.7579625 12.328,29.4289008 11.5,29.4289008 L11.5,29.4289008 Z M11.5,25.4411548 C10.122,25.4411548 9,26.5597175 9,27.933496 C9,29.3082715 10.122,30.4258373 11.5,30.4258373 C12.879,30.4258373 14,29.3082715 14,27.933496 C14,26.5597175 12.879,25.4411548 11.5,25.4411548 L11.5,25.4411548 Z M27.5,29.4289008 C26.673,29.4289008 26,28.7579625 26,27.933496 C26,27.1090295 26.673,26.4380913 27.5,26.4380913 C28.328,26.4380913 29,27.1090295 29,27.933496 C29,28.7579625 28.328,29.4289008 27.5,29.4289008 L27.5,29.4289008 Z M27.5,25.4411548 C26.122,25.4411548 25,26.5597175 25,27.933496 C25,29.3082715 26.122,30.4258373 27.5,30.4258373 C28.879,30.4258373 30,29.3082715 30,27.933496 C30,26.5597175 28.879,25.4411548 27.5,25.4411548 L27.5,25.4411548 Z M31.5,21.4534088 C30.673,21.4534088 30,20.7824705 30,19.9580041 C30,19.1335376 30.673,18.4625993 31.5,18.4625993 C32.328,18.4625993 33,19.1335376 33,19.9580041 C33,20.7824705 32.328,21.4534088 31.5,21.4534088 L31.5,21.4534088 Z M31.5,17.4656628 C30.122,17.4656628 29,18.5842256 29,19.9580041 C29,21.3327795 30.122,22.4503453 31.5,22.4503453 C32.879,22.4503453 34,21.3327795 34,19.9580041 C34,18.5842256 32.879,17.4656628 31.5,17.4656628 L31.5,17.4656628 Z M11.5,10.5658653 C12.328,10.5658653 13,11.2368036 13,12.0612701 C13,12.8857365 12.328,13.5566748 11.5,13.5566748 C10.673,13.5566748 10,12.8857365 10,12.0612701 C10,11.2368036 10.673,10.5658653 11.5,10.5658653 L11.5,10.5658653 Z M11.5,14.5536113 C12.879,14.5536113 14,13.4350485 14,12.0612701 C14,10.6864946 12.879,9.56892881 11.5,9.56892881 C10.122,9.56892881 9,10.6864946 9,12.0612701 C9,13.4350485 10.122,14.5536113 11.5,14.5536113 L11.5,14.5536113 Z M27.5,10.5658653 C28.328,10.5658653 29,11.2368036 29,12.0612701 C29,12.8857365 28.328,13.5566748 27.5,13.5566748 C26.673,13.5566748 26,12.8857365 26,12.0612701 C26,11.2368036 26.673,10.5658653 27.5,10.5658653 L27.5,10.5658653 Z M27.5,14.5536113 C28.879,14.5536113 30,13.4350485 30,12.0612701 C30,10.6864946 28.879,9.56892881 27.5,9.56892881 C26.122,9.56892881 25,10.6864946 25,12.0612701 C25,13.4350485 26.122,14.5536113 27.5,14.5536113 L27.5,14.5536113 Z M8.5,21.4534088 C7.673,21.4534088 7,20.7824705 7,19.9580041 C7,19.1335376 7.673,18.4625993 8.5,18.4625993 C9.328,18.4625993 10,19.1335376 10,19.9580041 C10,20.7824705 9.328,21.4534088 8.5,21.4534088 L8.5,21.4534088 Z M16.0020589,20.0228049 C16.004,19.8902124 15.955,19.7626045 15.862,19.6678955 L14.36,18.1166623 L13.641,18.8085363 L14.316,19.5063918 L10.955,19.5063918 C10.741,18.3479516 9.724,17.4656628 8.5,17.4656628 C7.122,17.4656628 6,18.5842256 6,19.9580041 C6,21.3327795 7.122,22.4503453 8.5,22.4503453 C9.691,22.4503453 10.685,21.6159094 10.936,20.5033283 L14.27,20.5033283 L13.654,21.0945117 L14.347,21.8133029 L15.849,20.3727296 C15.945,20.2810115 15.999,20.1553975 16.0020589,20.0228049 L16.0020589,20.0228049 Z M25.658,21.0905239 L26.284,20.5033283 L24,20.5033283 L24,19.5063918 L26.34,19.5063918 L25.647,18.8155148 L26.354,18.1106807 L27.901,19.6519445 C27.997,19.7476504 28.049,19.8772522 28.047,20.0118386 C28.045,20.147422 27.989,20.2750299 27.89,20.367745 L26.343,21.8162937 L25.658,21.0905239 Z M22.414,22.8222026 C21.664,22.5191339 20.841,22.3566333 20,22.3566333 C19.16,22.3566333 18.337,22.5191339 17.587,22.8222026 C18.255,21.0556311 18.255,18.8613739 17.587,17.0948024 C19.087,17.7009398 20.914,17.7009398 22.414,17.0948024 C21.746,18.8613739 21.746,21.0556311 22.414,22.8222026 L22.414,22.8222026 Z M24.354,15.8247053 C24.452,15.7270056 24.5,15.5993977 24.5,15.4717898 C24.5,15.3441819 24.452,15.2165741 24.354,15.1198712 C24.159,14.9244717 23.842,14.9244717 23.647,15.1198712 C22.727,16.0370528 21.398,16.5624383 20,16.5624383 C18.603,16.5624383 17.274,16.0370528 16.354,15.1198712 C16.159,14.9244717 15.842,14.9244717 15.647,15.1198712 C15.549,15.2165741 15.5,15.3441819 15.5,15.4717898 C15.5,15.5993977 15.549,15.7270056 15.647,15.8247053 C17.584,17.7557713 17.584,22.1602368 15.647,24.0922997 C15.549,24.1890025 15.5,24.3166104 15.5,24.4442183 C15.5,24.5718262 15.549,24.699434 15.647,24.7971338 C15.842,24.9915364 16.159,24.9915364 16.354,24.7971338 C17.274,23.8799522 18.603,23.3535698 20,23.3535698 C21.398,23.3535698 22.727,23.8799522 23.647,24.7971338 C23.745,24.8938366 23.872,24.9426865 24,24.9426865 C24.128,24.9426865 24.256,24.8938366 24.354,24.7971338 C24.452,24.699434 24.5,24.5718262 24.5,24.4442183 C24.5,24.3166104 24.452,24.1890025 24.354,24.0922997 C22.416,22.1602368 22.416,17.7557713 24.354,15.8247053 L24.354,15.8247053 Z\" id=\"Amazon-MQ-Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-mq-controller/v0.0.36/v1.0.0/model.json b/server/meshmodel/aws-mq-controller/v0.0.36/v1.0.0/model.json new file mode 100644 index 00000000000..2db1ad227fc --- /dev/null +++ b/server/meshmodel/aws-mq-controller/v0.0.36/v1.0.0/model.json @@ -0,0 +1,41 @@ +{ + "category": { + "name": "App Definition and Development" + }, + "displayName": "AWS MQ", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "capabilities": null, + "isAnnotation": false, + "primaryColor": "#E7157B", + "shape": "rectangle", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MQ_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.726,25.2816449 L8.863,25.7860948 C8.458,25.0972117 8.119,24.3664572 7.854,23.6127732 L8.797,23.2827873 C9.041,23.9756581 9.354,24.6485903 9.726,25.2816449 L9.726,25.2816449 Z M8.824,16.6372086 L7.882,16.300244 C8.136,15.5984007 8.455,14.9135054 8.83,14.2644997 L9.696,14.762968 C9.35,15.3601329 9.057,15.9911937 8.824,16.6372086 L8.824,16.6372086 Z M14.99,9.99860844 L14.58,9.08940236 C17.826,7.63686588 21.626,7.63686588 24.872,9.08940236 L24.462,9.99860844 C21.478,8.66271354 17.974,8.66271354 14.99,9.99860844 L14.99,9.99860844 Z M29.756,14.762968 L30.622,14.2644997 C30.998,14.9164962 31.318,15.6013916 31.569,16.301241 L30.627,16.6372086 C30.396,15.9931876 30.103,15.3631237 29.756,14.762968 L29.756,14.762968 Z M30.655,23.2827873 L31.598,23.6127732 C31.341,24.3425308 31.013,25.0543434 30.622,25.7292694 L29.756,25.2308012 C30.116,24.6097097 30.418,23.9537255 30.655,23.2827873 L30.655,23.2827873 Z M24.462,29.9961576 L24.872,30.9053637 C23.248,31.6321304 21.517,32 19.726,32 C17.935,32 16.204,31.6321304 14.58,30.9053637 L14.99,29.9961576 C17.976,31.3320525 21.476,31.3320525 24.462,29.9961576 L24.462,29.9961576 Z M11.5,29.4289008 C10.673,29.4289008 10,28.7579625 10,27.933496 C10,27.1090295 10.673,26.4380913 11.5,26.4380913 C12.328,26.4380913 13,27.1090295 13,27.933496 C13,28.7579625 12.328,29.4289008 11.5,29.4289008 L11.5,29.4289008 Z M11.5,25.4411548 C10.122,25.4411548 9,26.5597175 9,27.933496 C9,29.3082715 10.122,30.4258373 11.5,30.4258373 C12.879,30.4258373 14,29.3082715 14,27.933496 C14,26.5597175 12.879,25.4411548 11.5,25.4411548 L11.5,25.4411548 Z M27.5,29.4289008 C26.673,29.4289008 26,28.7579625 26,27.933496 C26,27.1090295 26.673,26.4380913 27.5,26.4380913 C28.328,26.4380913 29,27.1090295 29,27.933496 C29,28.7579625 28.328,29.4289008 27.5,29.4289008 L27.5,29.4289008 Z M27.5,25.4411548 C26.122,25.4411548 25,26.5597175 25,27.933496 C25,29.3082715 26.122,30.4258373 27.5,30.4258373 C28.879,30.4258373 30,29.3082715 30,27.933496 C30,26.5597175 28.879,25.4411548 27.5,25.4411548 L27.5,25.4411548 Z M31.5,21.4534088 C30.673,21.4534088 30,20.7824705 30,19.9580041 C30,19.1335376 30.673,18.4625993 31.5,18.4625993 C32.328,18.4625993 33,19.1335376 33,19.9580041 C33,20.7824705 32.328,21.4534088 31.5,21.4534088 L31.5,21.4534088 Z M31.5,17.4656628 C30.122,17.4656628 29,18.5842256 29,19.9580041 C29,21.3327795 30.122,22.4503453 31.5,22.4503453 C32.879,22.4503453 34,21.3327795 34,19.9580041 C34,18.5842256 32.879,17.4656628 31.5,17.4656628 L31.5,17.4656628 Z M11.5,10.5658653 C12.328,10.5658653 13,11.2368036 13,12.0612701 C13,12.8857365 12.328,13.5566748 11.5,13.5566748 C10.673,13.5566748 10,12.8857365 10,12.0612701 C10,11.2368036 10.673,10.5658653 11.5,10.5658653 L11.5,10.5658653 Z M11.5,14.5536113 C12.879,14.5536113 14,13.4350485 14,12.0612701 C14,10.6864946 12.879,9.56892881 11.5,9.56892881 C10.122,9.56892881 9,10.6864946 9,12.0612701 C9,13.4350485 10.122,14.5536113 11.5,14.5536113 L11.5,14.5536113 Z M27.5,10.5658653 C28.328,10.5658653 29,11.2368036 29,12.0612701 C29,12.8857365 28.328,13.5566748 27.5,13.5566748 C26.673,13.5566748 26,12.8857365 26,12.0612701 C26,11.2368036 26.673,10.5658653 27.5,10.5658653 L27.5,10.5658653 Z M27.5,14.5536113 C28.879,14.5536113 30,13.4350485 30,12.0612701 C30,10.6864946 28.879,9.56892881 27.5,9.56892881 C26.122,9.56892881 25,10.6864946 25,12.0612701 C25,13.4350485 26.122,14.5536113 27.5,14.5536113 L27.5,14.5536113 Z M8.5,21.4534088 C7.673,21.4534088 7,20.7824705 7,19.9580041 C7,19.1335376 7.673,18.4625993 8.5,18.4625993 C9.328,18.4625993 10,19.1335376 10,19.9580041 C10,20.7824705 9.328,21.4534088 8.5,21.4534088 L8.5,21.4534088 Z M16.0020589,20.0228049 C16.004,19.8902124 15.955,19.7626045 15.862,19.6678955 L14.36,18.1166623 L13.641,18.8085363 L14.316,19.5063918 L10.955,19.5063918 C10.741,18.3479516 9.724,17.4656628 8.5,17.4656628 C7.122,17.4656628 6,18.5842256 6,19.9580041 C6,21.3327795 7.122,22.4503453 8.5,22.4503453 C9.691,22.4503453 10.685,21.6159094 10.936,20.5033283 L14.27,20.5033283 L13.654,21.0945117 L14.347,21.8133029 L15.849,20.3727296 C15.945,20.2810115 15.999,20.1553975 16.0020589,20.0228049 L16.0020589,20.0228049 Z M25.658,21.0905239 L26.284,20.5033283 L24,20.5033283 L24,19.5063918 L26.34,19.5063918 L25.647,18.8155148 L26.354,18.1106807 L27.901,19.6519445 C27.997,19.7476504 28.049,19.8772522 28.047,20.0118386 C28.045,20.147422 27.989,20.2750299 27.89,20.367745 L26.343,21.8162937 L25.658,21.0905239 Z M22.414,22.8222026 C21.664,22.5191339 20.841,22.3566333 20,22.3566333 C19.16,22.3566333 18.337,22.5191339 17.587,22.8222026 C18.255,21.0556311 18.255,18.8613739 17.587,17.0948024 C19.087,17.7009398 20.914,17.7009398 22.414,17.0948024 C21.746,18.8613739 21.746,21.0556311 22.414,22.8222026 L22.414,22.8222026 Z M24.354,15.8247053 C24.452,15.7270056 24.5,15.5993977 24.5,15.4717898 C24.5,15.3441819 24.452,15.2165741 24.354,15.1198712 C24.159,14.9244717 23.842,14.9244717 23.647,15.1198712 C22.727,16.0370528 21.398,16.5624383 20,16.5624383 C18.603,16.5624383 17.274,16.0370528 16.354,15.1198712 C16.159,14.9244717 15.842,14.9244717 15.647,15.1198712 C15.549,15.2165741 15.5,15.3441819 15.5,15.4717898 C15.5,15.5993977 15.549,15.7270056 15.647,15.8247053 C17.584,17.7557713 17.584,22.1602368 15.647,24.0922997 C15.549,24.1890025 15.5,24.3166104 15.5,24.4442183 C15.5,24.5718262 15.549,24.699434 15.647,24.7971338 C15.842,24.9915364 16.159,24.9915364 16.354,24.7971338 C17.274,23.8799522 18.603,23.3535698 20,23.3535698 C21.398,23.3535698 22.727,23.8799522 23.647,24.7971338 C23.745,24.8938366 23.872,24.9426865 24,24.9426865 C24.128,24.9426865 24.256,24.8938366 24.354,24.7971338 C24.452,24.699434 24.5,24.5718262 24.5,24.4442183 C24.5,24.3166104 24.452,24.1890025 24.354,24.0922997 C22.416,22.1602368 22.416,17.7557713 24.354,15.8247053 L24.354,15.8247053 Z\" id=\"Amazon-MQ-Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_Amazon-MQ_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.726,25.2816449 L8.863,25.7860948 C8.458,25.0972117 8.119,24.3664572 7.854,23.6127732 L8.797,23.2827873 C9.041,23.9756581 9.354,24.6485903 9.726,25.2816449 L9.726,25.2816449 Z M8.824,16.6372086 L7.882,16.300244 C8.136,15.5984007 8.455,14.9135054 8.83,14.2644997 L9.696,14.762968 C9.35,15.3601329 9.057,15.9911937 8.824,16.6372086 L8.824,16.6372086 Z M14.99,9.99860844 L14.58,9.08940236 C17.826,7.63686588 21.626,7.63686588 24.872,9.08940236 L24.462,9.99860844 C21.478,8.66271354 17.974,8.66271354 14.99,9.99860844 L14.99,9.99860844 Z M29.756,14.762968 L30.622,14.2644997 C30.998,14.9164962 31.318,15.6013916 31.569,16.301241 L30.627,16.6372086 C30.396,15.9931876 30.103,15.3631237 29.756,14.762968 L29.756,14.762968 Z M30.655,23.2827873 L31.598,23.6127732 C31.341,24.3425308 31.013,25.0543434 30.622,25.7292694 L29.756,25.2308012 C30.116,24.6097097 30.418,23.9537255 30.655,23.2827873 L30.655,23.2827873 Z M24.462,29.9961576 L24.872,30.9053637 C23.248,31.6321304 21.517,32 19.726,32 C17.935,32 16.204,31.6321304 14.58,30.9053637 L14.99,29.9961576 C17.976,31.3320525 21.476,31.3320525 24.462,29.9961576 L24.462,29.9961576 Z M11.5,29.4289008 C10.673,29.4289008 10,28.7579625 10,27.933496 C10,27.1090295 10.673,26.4380913 11.5,26.4380913 C12.328,26.4380913 13,27.1090295 13,27.933496 C13,28.7579625 12.328,29.4289008 11.5,29.4289008 L11.5,29.4289008 Z M11.5,25.4411548 C10.122,25.4411548 9,26.5597175 9,27.933496 C9,29.3082715 10.122,30.4258373 11.5,30.4258373 C12.879,30.4258373 14,29.3082715 14,27.933496 C14,26.5597175 12.879,25.4411548 11.5,25.4411548 L11.5,25.4411548 Z M27.5,29.4289008 C26.673,29.4289008 26,28.7579625 26,27.933496 C26,27.1090295 26.673,26.4380913 27.5,26.4380913 C28.328,26.4380913 29,27.1090295 29,27.933496 C29,28.7579625 28.328,29.4289008 27.5,29.4289008 L27.5,29.4289008 Z M27.5,25.4411548 C26.122,25.4411548 25,26.5597175 25,27.933496 C25,29.3082715 26.122,30.4258373 27.5,30.4258373 C28.879,30.4258373 30,29.3082715 30,27.933496 C30,26.5597175 28.879,25.4411548 27.5,25.4411548 L27.5,25.4411548 Z M31.5,21.4534088 C30.673,21.4534088 30,20.7824705 30,19.9580041 C30,19.1335376 30.673,18.4625993 31.5,18.4625993 C32.328,18.4625993 33,19.1335376 33,19.9580041 C33,20.7824705 32.328,21.4534088 31.5,21.4534088 L31.5,21.4534088 Z M31.5,17.4656628 C30.122,17.4656628 29,18.5842256 29,19.9580041 C29,21.3327795 30.122,22.4503453 31.5,22.4503453 C32.879,22.4503453 34,21.3327795 34,19.9580041 C34,18.5842256 32.879,17.4656628 31.5,17.4656628 L31.5,17.4656628 Z M11.5,10.5658653 C12.328,10.5658653 13,11.2368036 13,12.0612701 C13,12.8857365 12.328,13.5566748 11.5,13.5566748 C10.673,13.5566748 10,12.8857365 10,12.0612701 C10,11.2368036 10.673,10.5658653 11.5,10.5658653 L11.5,10.5658653 Z M11.5,14.5536113 C12.879,14.5536113 14,13.4350485 14,12.0612701 C14,10.6864946 12.879,9.56892881 11.5,9.56892881 C10.122,9.56892881 9,10.6864946 9,12.0612701 C9,13.4350485 10.122,14.5536113 11.5,14.5536113 L11.5,14.5536113 Z M27.5,10.5658653 C28.328,10.5658653 29,11.2368036 29,12.0612701 C29,12.8857365 28.328,13.5566748 27.5,13.5566748 C26.673,13.5566748 26,12.8857365 26,12.0612701 C26,11.2368036 26.673,10.5658653 27.5,10.5658653 L27.5,10.5658653 Z M27.5,14.5536113 C28.879,14.5536113 30,13.4350485 30,12.0612701 C30,10.6864946 28.879,9.56892881 27.5,9.56892881 C26.122,9.56892881 25,10.6864946 25,12.0612701 C25,13.4350485 26.122,14.5536113 27.5,14.5536113 L27.5,14.5536113 Z M8.5,21.4534088 C7.673,21.4534088 7,20.7824705 7,19.9580041 C7,19.1335376 7.673,18.4625993 8.5,18.4625993 C9.328,18.4625993 10,19.1335376 10,19.9580041 C10,20.7824705 9.328,21.4534088 8.5,21.4534088 L8.5,21.4534088 Z M16.0020589,20.0228049 C16.004,19.8902124 15.955,19.7626045 15.862,19.6678955 L14.36,18.1166623 L13.641,18.8085363 L14.316,19.5063918 L10.955,19.5063918 C10.741,18.3479516 9.724,17.4656628 8.5,17.4656628 C7.122,17.4656628 6,18.5842256 6,19.9580041 C6,21.3327795 7.122,22.4503453 8.5,22.4503453 C9.691,22.4503453 10.685,21.6159094 10.936,20.5033283 L14.27,20.5033283 L13.654,21.0945117 L14.347,21.8133029 L15.849,20.3727296 C15.945,20.2810115 15.999,20.1553975 16.0020589,20.0228049 L16.0020589,20.0228049 Z M25.658,21.0905239 L26.284,20.5033283 L24,20.5033283 L24,19.5063918 L26.34,19.5063918 L25.647,18.8155148 L26.354,18.1106807 L27.901,19.6519445 C27.997,19.7476504 28.049,19.8772522 28.047,20.0118386 C28.045,20.147422 27.989,20.2750299 27.89,20.367745 L26.343,21.8162937 L25.658,21.0905239 Z M22.414,22.8222026 C21.664,22.5191339 20.841,22.3566333 20,22.3566333 C19.16,22.3566333 18.337,22.5191339 17.587,22.8222026 C18.255,21.0556311 18.255,18.8613739 17.587,17.0948024 C19.087,17.7009398 20.914,17.7009398 22.414,17.0948024 C21.746,18.8613739 21.746,21.0556311 22.414,22.8222026 L22.414,22.8222026 Z M24.354,15.8247053 C24.452,15.7270056 24.5,15.5993977 24.5,15.4717898 C24.5,15.3441819 24.452,15.2165741 24.354,15.1198712 C24.159,14.9244717 23.842,14.9244717 23.647,15.1198712 C22.727,16.0370528 21.398,16.5624383 20,16.5624383 C18.603,16.5624383 17.274,16.0370528 16.354,15.1198712 C16.159,14.9244717 15.842,14.9244717 15.647,15.1198712 C15.549,15.2165741 15.5,15.3441819 15.5,15.4717898 C15.5,15.5993977 15.549,15.7270056 15.647,15.8247053 C17.584,17.7557713 17.584,22.1602368 15.647,24.0922997 C15.549,24.1890025 15.5,24.3166104 15.5,24.4442183 C15.5,24.5718262 15.549,24.699434 15.647,24.7971338 C15.842,24.9915364 16.159,24.9915364 16.354,24.7971338 C17.274,23.8799522 18.603,23.3535698 20,23.3535698 C21.398,23.3535698 22.727,23.8799522 23.647,24.7971338 C23.745,24.8938366 23.872,24.9426865 24,24.9426865 C24.128,24.9426865 24.256,24.8938366 24.354,24.7971338 C24.452,24.699434 24.5,24.5718262 24.5,24.4442183 C24.5,24.3166104 24.452,24.1890025 24.354,24.0922997 C22.416,22.1602368 22.416,17.7557713 24.354,15.8247053 L24.354,15.8247053 Z\" id=\"Amazon-MQ-Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v0.0.36" + }, + "name": "aws-mq-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Streaming \u0026 Messaging", + "version": "v1.0.0", + "components": null, + "relationships": null + } \ No newline at end of file diff --git a/server/meshmodel/aws-sfn-controller/v1.0.14/v1.0.0/components/Activity.json b/server/meshmodel/aws-sfn-controller/v1.0.14/v1.0.0/components/Activity.json new file mode 100644 index 00000000000..47f47637d89 --- /dev/null +++ b/server/meshmodel/aws-sfn-controller/v1.0.14/v1.0.0/components/Activity.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "Activity", + "schema": "{\n \"description\": \"Activity is the Schema for the Activities API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"ActivitySpec defines the desired state of Activity.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the activity to create. This name must be unique for your AWS\\naccount and region for 90 days. For more information, see Limits Related\\nto State Machine Executions (https://docs.aws.amazon.com/step-functions/latest/dg/limits.html#service-limits-state-machine-executions)\\nin the AWS Step Functions Developer Guide.\\n\\n\\nA name must not contain:\\n\\n\\n - white space\\n\\n\\n - brackets \\u003c \\u003e { } [ ]\\n\\n\\n - wildcard characters ? *\\n\\n\\n - special characters \\\" # % \\\\ ^ | ~ ` $ \\u0026 , ; : /\\n\\n\\n - control characters (U+0000-001F, U+007F-009F)\\n\\n\\nTo enable logging with CloudWatch Logs, the name should only contain 0-9,\\nA-Z, a-z, - and _.\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"The list of tags to add to a resource.\\n\\n\\nAn array of key-value pairs. For more information, see Using Cost Allocation\\nTags (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)\\nin the AWS Billing and Cost Management User Guide, and Controlling Access\\nUsing IAM Tags (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_iam-tags.html).\\n\\n\\nTags may only contain Unicode letters, digits, white space, or these symbols:\\n_ . : / = + - @.\",\n \"items\": {\n \"description\": \"Tags are key-value pairs that can be associated with Step Functions state\\nmachines and activities.\\n\\n\\nAn array of key-value pairs. For more information, see Using Cost Allocation\\nTags (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)\\nin the AWS Billing and Cost Management User Guide, and Controlling Access\\nUsing IAM Tags (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_iam-tags.html).\\n\\n\\nTags may only contain Unicode letters, digits, white space, or these symbols:\\n_ . : / = + - @.\",\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Activity\",\n \"type\": \"object\"\n}", + "version": "sfn.services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Activity", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/sfn-controller/main/helm" + }, + "model": { + "category": { + "name": "Serverless" + }, + "displayName": "AWS Step Functions", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#E7157B", + "shape": "rectangle", + "source_uri": "git://github.com/aws-controllers-k8s/sfn-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Step-Functions_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23,22 L33,22 L33,18 L23,18 L23,22 Z M33.5,17 L22.5,17 C22.224,17 22,17.224 22,17.5 L22,22.5 C22,22.776 22.224,23 22.5,23 L33.5,23 C33.776,23 34,22.776 34,22.5 L34,17.5 C34,17.224 33.776,17 33.5,17 L33.5,17 Z M22,31.5 C22,32.327 21.327,33 20.5,33 C19.673,33 19,32.327 19,31.5 C19,30.673 19.673,30 20.5,30 C21.327,30 22,30.673 22,31.5 L22,31.5 Z M7,24 L16,24 L16,22 L7,22 L7,24 Z M7,18 L7,16 L11,16 L12,16 L16,16 L16,18 L7,18 Z M19,8.5 C19,7.673 19.673,7 20.5,7 C21.327,7 22,7.673 22,8.5 C22,9.327 21.327,10 20.5,10 C19.673,10 19,9.327 19,8.5 L19,8.5 Z M28,27 L12,27 L12,25 L16.5,25 C16.776,25 17,24.776 17,24.5 L17,21.5 C17,21.224 16.776,21 16.5,21 L12,21 L12,19 L16.5,19 C16.776,19 17,18.776 17,18.5 L17,15.5 C17,15.224 16.776,15 16.5,15 L12,15 L12,13 L28,13 L28,15 L29,15 L29,12.5 C29,12.224 28.776,12 28.5,12 L21,12 L21,10.949 C22.14,10.717 23,9.707 23,8.5 C23,7.122 21.879,6 20.5,6 C19.121,6 18,7.122 18,8.5 C18,9.707 18.86,10.717 20,10.949 L20,12 L11.5,12 C11.224,12 11,12.224 11,12.5 L11,15 L6.5,15 C6.224,15 6,15.224 6,15.5 L6,18.5 C6,18.776 6.224,19 6.5,19 L11,19 L11,21 L6.5,21 C6.224,21 6,21.224 6,21.5 L6,24.5 C6,24.776 6.224,25 6.5,25 L11,25 L11,27.5 C11,27.776 11.224,28 11.5,28 L20,28 L20,29.051 C18.86,29.283 18,30.293 18,31.5 C18,32.878 19.121,34 20.5,34 C21.879,34 23,32.878 23,31.5 C23,30.293 22.14,29.283 21,29.051 L21,28 L28.5,28 C28.776,28 29,27.776 29,27.5 L29,25 L28,25 L28,27 Z\" id=\"AWS_Step_Functions_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Step-Functions_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23,22 L33,22 L33,18 L23,18 L23,22 Z M33.5,17 L22.5,17 C22.224,17 22,17.224 22,17.5 L22,22.5 C22,22.776 22.224,23 22.5,23 L33.5,23 C33.776,23 34,22.776 34,22.5 L34,17.5 C34,17.224 33.776,17 33.5,17 L33.5,17 Z M22,31.5 C22,32.327 21.327,33 20.5,33 C19.673,33 19,32.327 19,31.5 C19,30.673 19.673,30 20.5,30 C21.327,30 22,30.673 22,31.5 L22,31.5 Z M7,24 L16,24 L16,22 L7,22 L7,24 Z M7,18 L7,16 L11,16 L12,16 L16,16 L16,18 L7,18 Z M19,8.5 C19,7.673 19.673,7 20.5,7 C21.327,7 22,7.673 22,8.5 C22,9.327 21.327,10 20.5,10 C19.673,10 19,9.327 19,8.5 L19,8.5 Z M28,27 L12,27 L12,25 L16.5,25 C16.776,25 17,24.776 17,24.5 L17,21.5 C17,21.224 16.776,21 16.5,21 L12,21 L12,19 L16.5,19 C16.776,19 17,18.776 17,18.5 L17,15.5 C17,15.224 16.776,15 16.5,15 L12,15 L12,13 L28,13 L28,15 L29,15 L29,12.5 C29,12.224 28.776,12 28.5,12 L21,12 L21,10.949 C22.14,10.717 23,9.707 23,8.5 C23,7.122 21.879,6 20.5,6 C19.121,6 18,7.122 18,8.5 C18,9.707 18.86,10.717 20,10.949 L20,12 L11.5,12 C11.224,12 11,12.224 11,12.5 L11,15 L6.5,15 C6.224,15 6,15.224 6,15.5 L6,18.5 C6,18.776 6.224,19 6.5,19 L11,19 L11,21 L6.5,21 C6.224,21 6,21.224 6,21.5 L6,24.5 C6,24.776 6.224,25 6.5,25 L11,25 L11,27.5 C11,27.776 11.224,28 11.5,28 L20,28 L20,29.051 C18.86,29.283 18,30.293 18,31.5 C18,32.878 19.121,34 20.5,34 C21.879,34 23,32.878 23,31.5 C23,30.293 22.14,29.283 21,29.051 L21,28 L28.5,28 C28.776,28 29,27.776 29,27.5 L29,25 L28,25 L28,27 Z\" id=\"AWS_Step_Functions_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.0.14" + }, + "name": "aws-sfn-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Serverless", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#E7157B", + "shape": "rectangle", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Step-Functions_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath d=\"M23,22 L33,22 L33,18 L23,18 L23,22 Z M33.5,17 L22.5,17 C22.224,17 22,17.224 22,17.5 L22,22.5 C22,22.776 22.224,23 22.5,23 L33.5,23 C33.776,23 34,22.776 34,22.5 L34,17.5 C34,17.224 33.776,17 33.5,17 L33.5,17 Z M22,31.5 C22,32.327 21.327,33 20.5,33 C19.673,33 19,32.327 19,31.5 C19,30.673 19.673,30 20.5,30 C21.327,30 22,30.673 22,31.5 L22,31.5 Z M7,24 L16,24 L16,22 L7,22 L7,24 Z M7,18 L7,16 L11,16 L12,16 L16,16 L16,18 L7,18 Z M19,8.5 C19,7.673 19.673,7 20.5,7 C21.327,7 22,7.673 22,8.5 C22,9.327 21.327,10 20.5,10 C19.673,10 19,9.327 19,8.5 L19,8.5 Z M28,27 L12,27 L12,25 L16.5,25 C16.776,25 17,24.776 17,24.5 L17,21.5 C17,21.224 16.776,21 16.5,21 L12,21 L12,19 L16.5,19 C16.776,19 17,18.776 17,18.5 L17,15.5 C17,15.224 16.776,15 16.5,15 L12,15 L12,13 L28,13 L28,15 L29,15 L29,12.5 C29,12.224 28.776,12 28.5,12 L21,12 L21,10.949 C22.14,10.717 23,9.707 23,8.5 C23,7.122 21.879,6 20.5,6 C19.121,6 18,7.122 18,8.5 C18,9.707 18.86,10.717 20,10.949 L20,12 L11.5,12 C11.224,12 11,12.224 11,12.5 L11,15 L6.5,15 C6.224,15 6,15.224 6,15.5 L6,18.5 C6,18.776 6.224,19 6.5,19 L11,19 L11,21 L6.5,21 C6.224,21 6,21.224 6,21.5 L6,24.5 C6,24.776 6.224,25 6.5,25 L11,25 L11,27.5 C11,27.776 11.224,28 11.5,28 L20,28 L20,29.051 C18.86,29.283 18,30.293 18,31.5 C18,32.878 19.121,34 20.5,34 C21.879,34 23,32.878 23,31.5 C23,30.293 22.14,29.283 21,29.051 L21,28 L28.5,28 C28.776,28 29,27.776 29,27.5 L29,25 L28,25 L28,27 Z\" id=\"AWS_Step_Functions_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Step-Functions_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath d=\"M23,22 L33,22 L33,18 L23,18 L23,22 Z M33.5,17 L22.5,17 C22.224,17 22,17.224 22,17.5 L22,22.5 C22,22.776 22.224,23 22.5,23 L33.5,23 C33.776,23 34,22.776 34,22.5 L34,17.5 C34,17.224 33.776,17 33.5,17 L33.5,17 Z M22,31.5 C22,32.327 21.327,33 20.5,33 C19.673,33 19,32.327 19,31.5 C19,30.673 19.673,30 20.5,30 C21.327,30 22,30.673 22,31.5 L22,31.5 Z M7,24 L16,24 L16,22 L7,22 L7,24 Z M7,18 L7,16 L11,16 L12,16 L16,16 L16,18 L7,18 Z M19,8.5 C19,7.673 19.673,7 20.5,7 C21.327,7 22,7.673 22,8.5 C22,9.327 21.327,10 20.5,10 C19.673,10 19,9.327 19,8.5 L19,8.5 Z M28,27 L12,27 L12,25 L16.5,25 C16.776,25 17,24.776 17,24.5 L17,21.5 C17,21.224 16.776,21 16.5,21 L12,21 L12,19 L16.5,19 C16.776,19 17,18.776 17,18.5 L17,15.5 C17,15.224 16.776,15 16.5,15 L12,15 L12,13 L28,13 L28,15 L29,15 L29,12.5 C29,12.224 28.776,12 28.5,12 L21,12 L21,10.949 C22.14,10.717 23,9.707 23,8.5 C23,7.122 21.879,6 20.5,6 C19.121,6 18,7.122 18,8.5 C18,9.707 18.86,10.717 20,10.949 L20,12 L11.5,12 C11.224,12 11,12.224 11,12.5 L11,15 L6.5,15 C6.224,15 6,15.224 6,15.5 L6,18.5 C6,18.776 6.224,19 6.5,19 L11,19 L11,21 L6.5,21 C6.224,21 6,21.224 6,21.5 L6,24.5 C6,24.776 6.224,25 6.5,25 L11,25 L11,27.5 C11,27.776 11.224,28 11.5,28 L20,28 L20,29.051 C18.86,29.283 18,30.293 18,31.5 C18,32.878 19.121,34 20.5,34 C21.879,34 23,32.878 23,31.5 C23,30.293 22.14,29.283 21,29.051 L21,28 L28.5,28 C28.776,28 29,27.776 29,27.5 L29,25 L28,25 L28,27 Z\" id=\"AWS_Step_Functions_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-sfn-controller/v1.0.14/v1.0.0/components/AdoptedResource.json b/server/meshmodel/aws-sfn-controller/v1.0.14/v1.0.0/components/AdoptedResource.json new file mode 100644 index 00000000000..497acf279aa --- /dev/null +++ b/server/meshmodel/aws-sfn-controller/v1.0.14/v1.0.0/components/AdoptedResource.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "AdoptedResource", + "schema": "{\n \"description\": \"AdoptedResource is the schema for the AdoptedResource API.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"AdoptedResourceSpec defines the desired state of the AdoptedResource.\",\n \"properties\": {\n \"aws\": {\n \"description\": \"AWSIdentifiers provide all unique ways to reference an AWS resource.\",\n \"properties\": {\n \"additionalKeys\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"AdditionalKeys represents any additional arbitrary identifiers used when\\ndescribing the target resource.\",\n \"type\": \"object\"\n },\n \"arn\": {\n \"description\": \"ARN is the AWS Resource Name for the resource. It is a globally\\nunique identifier.\",\n \"type\": \"string\"\n },\n \"nameOrID\": {\n \"description\": \"NameOrId is a user-supplied string identifier for the resource. It may\\nor may not be globally unique, depending on the type of resource.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"kubernetes\": {\n \"description\": \"ResourceWithMetadata provides the values necessary to create a\\nKubernetes resource and override any of its metadata values.\",\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"ObjectMeta is metadata that all persisted resources must have, which includes all objects\\nusers must create.\\nIt is not possible to use `metav1.ObjectMeta` inside spec, as the controller-gen\\nautomatically converts this to an arbitrary string-string map.\\nhttps://github.com/kubernetes-sigs/controller-tools/issues/385\\n\\n\\nActive discussion about inclusion of this field in the spec is happening in this PR:\\nhttps://github.com/kubernetes-sigs/controller-tools/pull/395\\n\\n\\nUntil this is allowed, or if it never is, we will produce a subset of the object meta\\nthat contains only the fields which the user is allowed to modify in the metadata.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: http://kubernetes.io/docs/user-guide/annotations\",\n \"type\": \"object\"\n },\n \"generateName\": {\n \"description\": \"GenerateName is an optional prefix, used by the server, to generate a unique\\nname ONLY IF the Name field has not been provided.\\nIf this field is used, the name returned to the client will be different\\nthan the name passed. This value will also be combined with a unique suffix.\\nThe provided value has the same validation rules as the Name field,\\nand may be truncated by the length of the suffix required to make the value\\nunique on the server.\\n\\n\\nIf this field is specified and the generated name exists, the server will\\nNOT return a 409 - instead, it will either return 201 Created or 500 with Reason\\nServerTimeout indicating a unique name could not be found in the time allotted, and the client\\nshould retry (optionally after the time indicated in the Retry-After header).\\n\\n\\nApplied only if Name is not specified.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: http://kubernetes.io/docs/user-guide/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: http://kubernetes.io/docs/user-guide/identifiers#names\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace defines the space within each name must be unique. An empty namespace is\\nequivalent to the \\\"default\\\" namespace, but \\\"default\\\" is the canonical representation.\\nNot all objects are required to be scoped to a namespace - the value of this field for\\nthose objects will be empty.\\n\\n\\nMust be a DNS_LABEL.\\nCannot be updated.\\nMore info: http://kubernetes.io/docs/user-guide/namespaces\",\n \"type\": \"string\"\n },\n \"ownerReferences\": {\n \"description\": \"List of objects depended by this object. If ALL objects in the list have\\nbeen deleted, this object will be garbage collected. If this object is managed by a controller,\\nthen an entry in this list will point to this controller, with the controller field set to true.\\nThere cannot be more than one managing controller.\",\n \"items\": {\n \"description\": \"OwnerReference contains enough information to let you identify an owning\\nobject. An owning object must be in the same namespace as the dependent, or\\nbe cluster-scoped, so there is no namespace field.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"API version of the referent.\",\n \"type\": \"string\"\n },\n \"blockOwnerDeletion\": {\n \"description\": \"If true, AND if the owner has the \\\"foregroundDeletion\\\" finalizer, then\\nthe owner cannot be deleted from the key-value store until this\\nreference is removed.\\nSee https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion\\nfor how the garbage collector interacts with this field and enforces the foreground deletion.\\nDefaults to false.\\nTo set this field, a user needs \\\"delete\\\" permission of the owner,\\notherwise 422 (Unprocessable Entity) will be returned.\",\n \"type\": \"boolean\"\n },\n \"controller\": {\n \"description\": \"If true, this reference points to the managing controller.\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of the referent.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n },\n \"uid\": {\n \"description\": \"UID of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"apiVersion\",\n \"kind\",\n \"name\",\n \"uid\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"group\",\n \"kind\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"aws\",\n \"kubernetes\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Adopted Resource\",\n \"type\": \"object\"\n}", + "version": "services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Adopted Resource", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/sfn-controller/main/helm" + }, + "model": { + "category": { + "name": "Serverless" + }, + "displayName": "AWS Step Functions", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#E7157B", + "shape": "rectangle", + "source_uri": "git://github.com/aws-controllers-k8s/sfn-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Step-Functions_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23,22 L33,22 L33,18 L23,18 L23,22 Z M33.5,17 L22.5,17 C22.224,17 22,17.224 22,17.5 L22,22.5 C22,22.776 22.224,23 22.5,23 L33.5,23 C33.776,23 34,22.776 34,22.5 L34,17.5 C34,17.224 33.776,17 33.5,17 L33.5,17 Z M22,31.5 C22,32.327 21.327,33 20.5,33 C19.673,33 19,32.327 19,31.5 C19,30.673 19.673,30 20.5,30 C21.327,30 22,30.673 22,31.5 L22,31.5 Z M7,24 L16,24 L16,22 L7,22 L7,24 Z M7,18 L7,16 L11,16 L12,16 L16,16 L16,18 L7,18 Z M19,8.5 C19,7.673 19.673,7 20.5,7 C21.327,7 22,7.673 22,8.5 C22,9.327 21.327,10 20.5,10 C19.673,10 19,9.327 19,8.5 L19,8.5 Z M28,27 L12,27 L12,25 L16.5,25 C16.776,25 17,24.776 17,24.5 L17,21.5 C17,21.224 16.776,21 16.5,21 L12,21 L12,19 L16.5,19 C16.776,19 17,18.776 17,18.5 L17,15.5 C17,15.224 16.776,15 16.5,15 L12,15 L12,13 L28,13 L28,15 L29,15 L29,12.5 C29,12.224 28.776,12 28.5,12 L21,12 L21,10.949 C22.14,10.717 23,9.707 23,8.5 C23,7.122 21.879,6 20.5,6 C19.121,6 18,7.122 18,8.5 C18,9.707 18.86,10.717 20,10.949 L20,12 L11.5,12 C11.224,12 11,12.224 11,12.5 L11,15 L6.5,15 C6.224,15 6,15.224 6,15.5 L6,18.5 C6,18.776 6.224,19 6.5,19 L11,19 L11,21 L6.5,21 C6.224,21 6,21.224 6,21.5 L6,24.5 C6,24.776 6.224,25 6.5,25 L11,25 L11,27.5 C11,27.776 11.224,28 11.5,28 L20,28 L20,29.051 C18.86,29.283 18,30.293 18,31.5 C18,32.878 19.121,34 20.5,34 C21.879,34 23,32.878 23,31.5 C23,30.293 22.14,29.283 21,29.051 L21,28 L28.5,28 C28.776,28 29,27.776 29,27.5 L29,25 L28,25 L28,27 Z\" id=\"AWS_Step_Functions_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Step-Functions_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23,22 L33,22 L33,18 L23,18 L23,22 Z M33.5,17 L22.5,17 C22.224,17 22,17.224 22,17.5 L22,22.5 C22,22.776 22.224,23 22.5,23 L33.5,23 C33.776,23 34,22.776 34,22.5 L34,17.5 C34,17.224 33.776,17 33.5,17 L33.5,17 Z M22,31.5 C22,32.327 21.327,33 20.5,33 C19.673,33 19,32.327 19,31.5 C19,30.673 19.673,30 20.5,30 C21.327,30 22,30.673 22,31.5 L22,31.5 Z M7,24 L16,24 L16,22 L7,22 L7,24 Z M7,18 L7,16 L11,16 L12,16 L16,16 L16,18 L7,18 Z M19,8.5 C19,7.673 19.673,7 20.5,7 C21.327,7 22,7.673 22,8.5 C22,9.327 21.327,10 20.5,10 C19.673,10 19,9.327 19,8.5 L19,8.5 Z M28,27 L12,27 L12,25 L16.5,25 C16.776,25 17,24.776 17,24.5 L17,21.5 C17,21.224 16.776,21 16.5,21 L12,21 L12,19 L16.5,19 C16.776,19 17,18.776 17,18.5 L17,15.5 C17,15.224 16.776,15 16.5,15 L12,15 L12,13 L28,13 L28,15 L29,15 L29,12.5 C29,12.224 28.776,12 28.5,12 L21,12 L21,10.949 C22.14,10.717 23,9.707 23,8.5 C23,7.122 21.879,6 20.5,6 C19.121,6 18,7.122 18,8.5 C18,9.707 18.86,10.717 20,10.949 L20,12 L11.5,12 C11.224,12 11,12.224 11,12.5 L11,15 L6.5,15 C6.224,15 6,15.224 6,15.5 L6,18.5 C6,18.776 6.224,19 6.5,19 L11,19 L11,21 L6.5,21 C6.224,21 6,21.224 6,21.5 L6,24.5 C6,24.776 6.224,25 6.5,25 L11,25 L11,27.5 C11,27.776 11.224,28 11.5,28 L20,28 L20,29.051 C18.86,29.283 18,30.293 18,31.5 C18,32.878 19.121,34 20.5,34 C21.879,34 23,32.878 23,31.5 C23,30.293 22.14,29.283 21,29.051 L21,28 L28.5,28 C28.776,28 29,27.776 29,27.5 L29,25 L28,25 L28,27 Z\" id=\"AWS_Step_Functions_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.0.14" + }, + "name": "aws-sfn-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Serverless", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#E7157B", + "shape": "rectangle", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Step-Functions_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath d=\"M23,22 L33,22 L33,18 L23,18 L23,22 Z M33.5,17 L22.5,17 C22.224,17 22,17.224 22,17.5 L22,22.5 C22,22.776 22.224,23 22.5,23 L33.5,23 C33.776,23 34,22.776 34,22.5 L34,17.5 C34,17.224 33.776,17 33.5,17 L33.5,17 Z M22,31.5 C22,32.327 21.327,33 20.5,33 C19.673,33 19,32.327 19,31.5 C19,30.673 19.673,30 20.5,30 C21.327,30 22,30.673 22,31.5 L22,31.5 Z M7,24 L16,24 L16,22 L7,22 L7,24 Z M7,18 L7,16 L11,16 L12,16 L16,16 L16,18 L7,18 Z M19,8.5 C19,7.673 19.673,7 20.5,7 C21.327,7 22,7.673 22,8.5 C22,9.327 21.327,10 20.5,10 C19.673,10 19,9.327 19,8.5 L19,8.5 Z M28,27 L12,27 L12,25 L16.5,25 C16.776,25 17,24.776 17,24.5 L17,21.5 C17,21.224 16.776,21 16.5,21 L12,21 L12,19 L16.5,19 C16.776,19 17,18.776 17,18.5 L17,15.5 C17,15.224 16.776,15 16.5,15 L12,15 L12,13 L28,13 L28,15 L29,15 L29,12.5 C29,12.224 28.776,12 28.5,12 L21,12 L21,10.949 C22.14,10.717 23,9.707 23,8.5 C23,7.122 21.879,6 20.5,6 C19.121,6 18,7.122 18,8.5 C18,9.707 18.86,10.717 20,10.949 L20,12 L11.5,12 C11.224,12 11,12.224 11,12.5 L11,15 L6.5,15 C6.224,15 6,15.224 6,15.5 L6,18.5 C6,18.776 6.224,19 6.5,19 L11,19 L11,21 L6.5,21 C6.224,21 6,21.224 6,21.5 L6,24.5 C6,24.776 6.224,25 6.5,25 L11,25 L11,27.5 C11,27.776 11.224,28 11.5,28 L20,28 L20,29.051 C18.86,29.283 18,30.293 18,31.5 C18,32.878 19.121,34 20.5,34 C21.879,34 23,32.878 23,31.5 C23,30.293 22.14,29.283 21,29.051 L21,28 L28.5,28 C28.776,28 29,27.776 29,27.5 L29,25 L28,25 L28,27 Z\" id=\"AWS_Step_Functions_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Step-Functions_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath d=\"M23,22 L33,22 L33,18 L23,18 L23,22 Z M33.5,17 L22.5,17 C22.224,17 22,17.224 22,17.5 L22,22.5 C22,22.776 22.224,23 22.5,23 L33.5,23 C33.776,23 34,22.776 34,22.5 L34,17.5 C34,17.224 33.776,17 33.5,17 L33.5,17 Z M22,31.5 C22,32.327 21.327,33 20.5,33 C19.673,33 19,32.327 19,31.5 C19,30.673 19.673,30 20.5,30 C21.327,30 22,30.673 22,31.5 L22,31.5 Z M7,24 L16,24 L16,22 L7,22 L7,24 Z M7,18 L7,16 L11,16 L12,16 L16,16 L16,18 L7,18 Z M19,8.5 C19,7.673 19.673,7 20.5,7 C21.327,7 22,7.673 22,8.5 C22,9.327 21.327,10 20.5,10 C19.673,10 19,9.327 19,8.5 L19,8.5 Z M28,27 L12,27 L12,25 L16.5,25 C16.776,25 17,24.776 17,24.5 L17,21.5 C17,21.224 16.776,21 16.5,21 L12,21 L12,19 L16.5,19 C16.776,19 17,18.776 17,18.5 L17,15.5 C17,15.224 16.776,15 16.5,15 L12,15 L12,13 L28,13 L28,15 L29,15 L29,12.5 C29,12.224 28.776,12 28.5,12 L21,12 L21,10.949 C22.14,10.717 23,9.707 23,8.5 C23,7.122 21.879,6 20.5,6 C19.121,6 18,7.122 18,8.5 C18,9.707 18.86,10.717 20,10.949 L20,12 L11.5,12 C11.224,12 11,12.224 11,12.5 L11,15 L6.5,15 C6.224,15 6,15.224 6,15.5 L6,18.5 C6,18.776 6.224,19 6.5,19 L11,19 L11,21 L6.5,21 C6.224,21 6,21.224 6,21.5 L6,24.5 C6,24.776 6.224,25 6.5,25 L11,25 L11,27.5 C11,27.776 11.224,28 11.5,28 L20,28 L20,29.051 C18.86,29.283 18,30.293 18,31.5 C18,32.878 19.121,34 20.5,34 C21.879,34 23,32.878 23,31.5 C23,30.293 22.14,29.283 21,29.051 L21,28 L28.5,28 C28.776,28 29,27.776 29,27.5 L29,25 L28,25 L28,27 Z\" id=\"AWS_Step_Functions_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-sfn-controller/v1.0.14/v1.0.0/components/FieldExport.json b/server/meshmodel/aws-sfn-controller/v1.0.14/v1.0.0/components/FieldExport.json new file mode 100644 index 00000000000..05be935d6c0 --- /dev/null +++ b/server/meshmodel/aws-sfn-controller/v1.0.14/v1.0.0/components/FieldExport.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "FieldExport", + "schema": "{\n \"description\": \"FieldExport is the schema for the FieldExport API.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"FieldExportSpec defines the desired state of the FieldExport.\",\n \"properties\": {\n \"from\": {\n \"description\": \"ResourceFieldSelector provides the values necessary to identify an individual\\nfield on an individual K8s resource.\",\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"resource\": {\n \"description\": \"NamespacedResource provides all the values necessary to identify an ACK\\nresource of a given type (within the same namespace as the custom resource\\ncontaining this type).\",\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"group\",\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"path\",\n \"resource\"\n ],\n \"type\": \"object\"\n },\n \"to\": {\n \"description\": \"FieldExportTarget provides the values necessary to identify the\\noutput path for a field export.\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key overrides the default value (`\\u003cnamespace\\u003e.\\u003cFieldExport-resource-name\\u003e`) for the FieldExport target\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"FieldExportOutputType represents all types that can be produced by a field\\nexport operation\",\n \"enum\": [\n \"configmap\",\n \"secret\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is marked as optional, so we cannot compose `NamespacedName`\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"from\",\n \"to\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Field Export\",\n \"type\": \"object\"\n}", + "version": "services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Field Export", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/sfn-controller/main/helm" + }, + "model": { + "category": { + "name": "Serverless" + }, + "displayName": "AWS Step Functions", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#E7157B", + "shape": "rectangle", + "source_uri": "git://github.com/aws-controllers-k8s/sfn-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Step-Functions_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23,22 L33,22 L33,18 L23,18 L23,22 Z M33.5,17 L22.5,17 C22.224,17 22,17.224 22,17.5 L22,22.5 C22,22.776 22.224,23 22.5,23 L33.5,23 C33.776,23 34,22.776 34,22.5 L34,17.5 C34,17.224 33.776,17 33.5,17 L33.5,17 Z M22,31.5 C22,32.327 21.327,33 20.5,33 C19.673,33 19,32.327 19,31.5 C19,30.673 19.673,30 20.5,30 C21.327,30 22,30.673 22,31.5 L22,31.5 Z M7,24 L16,24 L16,22 L7,22 L7,24 Z M7,18 L7,16 L11,16 L12,16 L16,16 L16,18 L7,18 Z M19,8.5 C19,7.673 19.673,7 20.5,7 C21.327,7 22,7.673 22,8.5 C22,9.327 21.327,10 20.5,10 C19.673,10 19,9.327 19,8.5 L19,8.5 Z M28,27 L12,27 L12,25 L16.5,25 C16.776,25 17,24.776 17,24.5 L17,21.5 C17,21.224 16.776,21 16.5,21 L12,21 L12,19 L16.5,19 C16.776,19 17,18.776 17,18.5 L17,15.5 C17,15.224 16.776,15 16.5,15 L12,15 L12,13 L28,13 L28,15 L29,15 L29,12.5 C29,12.224 28.776,12 28.5,12 L21,12 L21,10.949 C22.14,10.717 23,9.707 23,8.5 C23,7.122 21.879,6 20.5,6 C19.121,6 18,7.122 18,8.5 C18,9.707 18.86,10.717 20,10.949 L20,12 L11.5,12 C11.224,12 11,12.224 11,12.5 L11,15 L6.5,15 C6.224,15 6,15.224 6,15.5 L6,18.5 C6,18.776 6.224,19 6.5,19 L11,19 L11,21 L6.5,21 C6.224,21 6,21.224 6,21.5 L6,24.5 C6,24.776 6.224,25 6.5,25 L11,25 L11,27.5 C11,27.776 11.224,28 11.5,28 L20,28 L20,29.051 C18.86,29.283 18,30.293 18,31.5 C18,32.878 19.121,34 20.5,34 C21.879,34 23,32.878 23,31.5 C23,30.293 22.14,29.283 21,29.051 L21,28 L28.5,28 C28.776,28 29,27.776 29,27.5 L29,25 L28,25 L28,27 Z\" id=\"AWS_Step_Functions_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Step-Functions_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23,22 L33,22 L33,18 L23,18 L23,22 Z M33.5,17 L22.5,17 C22.224,17 22,17.224 22,17.5 L22,22.5 C22,22.776 22.224,23 22.5,23 L33.5,23 C33.776,23 34,22.776 34,22.5 L34,17.5 C34,17.224 33.776,17 33.5,17 L33.5,17 Z M22,31.5 C22,32.327 21.327,33 20.5,33 C19.673,33 19,32.327 19,31.5 C19,30.673 19.673,30 20.5,30 C21.327,30 22,30.673 22,31.5 L22,31.5 Z M7,24 L16,24 L16,22 L7,22 L7,24 Z M7,18 L7,16 L11,16 L12,16 L16,16 L16,18 L7,18 Z M19,8.5 C19,7.673 19.673,7 20.5,7 C21.327,7 22,7.673 22,8.5 C22,9.327 21.327,10 20.5,10 C19.673,10 19,9.327 19,8.5 L19,8.5 Z M28,27 L12,27 L12,25 L16.5,25 C16.776,25 17,24.776 17,24.5 L17,21.5 C17,21.224 16.776,21 16.5,21 L12,21 L12,19 L16.5,19 C16.776,19 17,18.776 17,18.5 L17,15.5 C17,15.224 16.776,15 16.5,15 L12,15 L12,13 L28,13 L28,15 L29,15 L29,12.5 C29,12.224 28.776,12 28.5,12 L21,12 L21,10.949 C22.14,10.717 23,9.707 23,8.5 C23,7.122 21.879,6 20.5,6 C19.121,6 18,7.122 18,8.5 C18,9.707 18.86,10.717 20,10.949 L20,12 L11.5,12 C11.224,12 11,12.224 11,12.5 L11,15 L6.5,15 C6.224,15 6,15.224 6,15.5 L6,18.5 C6,18.776 6.224,19 6.5,19 L11,19 L11,21 L6.5,21 C6.224,21 6,21.224 6,21.5 L6,24.5 C6,24.776 6.224,25 6.5,25 L11,25 L11,27.5 C11,27.776 11.224,28 11.5,28 L20,28 L20,29.051 C18.86,29.283 18,30.293 18,31.5 C18,32.878 19.121,34 20.5,34 C21.879,34 23,32.878 23,31.5 C23,30.293 22.14,29.283 21,29.051 L21,28 L28.5,28 C28.776,28 29,27.776 29,27.5 L29,25 L28,25 L28,27 Z\" id=\"AWS_Step_Functions_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.0.14" + }, + "name": "aws-sfn-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Serverless", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#E7157B", + "shape": "rectangle", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Step-Functions_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath d=\"M23,22 L33,22 L33,18 L23,18 L23,22 Z M33.5,17 L22.5,17 C22.224,17 22,17.224 22,17.5 L22,22.5 C22,22.776 22.224,23 22.5,23 L33.5,23 C33.776,23 34,22.776 34,22.5 L34,17.5 C34,17.224 33.776,17 33.5,17 L33.5,17 Z M22,31.5 C22,32.327 21.327,33 20.5,33 C19.673,33 19,32.327 19,31.5 C19,30.673 19.673,30 20.5,30 C21.327,30 22,30.673 22,31.5 L22,31.5 Z M7,24 L16,24 L16,22 L7,22 L7,24 Z M7,18 L7,16 L11,16 L12,16 L16,16 L16,18 L7,18 Z M19,8.5 C19,7.673 19.673,7 20.5,7 C21.327,7 22,7.673 22,8.5 C22,9.327 21.327,10 20.5,10 C19.673,10 19,9.327 19,8.5 L19,8.5 Z M28,27 L12,27 L12,25 L16.5,25 C16.776,25 17,24.776 17,24.5 L17,21.5 C17,21.224 16.776,21 16.5,21 L12,21 L12,19 L16.5,19 C16.776,19 17,18.776 17,18.5 L17,15.5 C17,15.224 16.776,15 16.5,15 L12,15 L12,13 L28,13 L28,15 L29,15 L29,12.5 C29,12.224 28.776,12 28.5,12 L21,12 L21,10.949 C22.14,10.717 23,9.707 23,8.5 C23,7.122 21.879,6 20.5,6 C19.121,6 18,7.122 18,8.5 C18,9.707 18.86,10.717 20,10.949 L20,12 L11.5,12 C11.224,12 11,12.224 11,12.5 L11,15 L6.5,15 C6.224,15 6,15.224 6,15.5 L6,18.5 C6,18.776 6.224,19 6.5,19 L11,19 L11,21 L6.5,21 C6.224,21 6,21.224 6,21.5 L6,24.5 C6,24.776 6.224,25 6.5,25 L11,25 L11,27.5 C11,27.776 11.224,28 11.5,28 L20,28 L20,29.051 C18.86,29.283 18,30.293 18,31.5 C18,32.878 19.121,34 20.5,34 C21.879,34 23,32.878 23,31.5 C23,30.293 22.14,29.283 21,29.051 L21,28 L28.5,28 C28.776,28 29,27.776 29,27.5 L29,25 L28,25 L28,27 Z\" id=\"AWS_Step_Functions_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Step-Functions_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath d=\"M23,22 L33,22 L33,18 L23,18 L23,22 Z M33.5,17 L22.5,17 C22.224,17 22,17.224 22,17.5 L22,22.5 C22,22.776 22.224,23 22.5,23 L33.5,23 C33.776,23 34,22.776 34,22.5 L34,17.5 C34,17.224 33.776,17 33.5,17 L33.5,17 Z M22,31.5 C22,32.327 21.327,33 20.5,33 C19.673,33 19,32.327 19,31.5 C19,30.673 19.673,30 20.5,30 C21.327,30 22,30.673 22,31.5 L22,31.5 Z M7,24 L16,24 L16,22 L7,22 L7,24 Z M7,18 L7,16 L11,16 L12,16 L16,16 L16,18 L7,18 Z M19,8.5 C19,7.673 19.673,7 20.5,7 C21.327,7 22,7.673 22,8.5 C22,9.327 21.327,10 20.5,10 C19.673,10 19,9.327 19,8.5 L19,8.5 Z M28,27 L12,27 L12,25 L16.5,25 C16.776,25 17,24.776 17,24.5 L17,21.5 C17,21.224 16.776,21 16.5,21 L12,21 L12,19 L16.5,19 C16.776,19 17,18.776 17,18.5 L17,15.5 C17,15.224 16.776,15 16.5,15 L12,15 L12,13 L28,13 L28,15 L29,15 L29,12.5 C29,12.224 28.776,12 28.5,12 L21,12 L21,10.949 C22.14,10.717 23,9.707 23,8.5 C23,7.122 21.879,6 20.5,6 C19.121,6 18,7.122 18,8.5 C18,9.707 18.86,10.717 20,10.949 L20,12 L11.5,12 C11.224,12 11,12.224 11,12.5 L11,15 L6.5,15 C6.224,15 6,15.224 6,15.5 L6,18.5 C6,18.776 6.224,19 6.5,19 L11,19 L11,21 L6.5,21 C6.224,21 6,21.224 6,21.5 L6,24.5 C6,24.776 6.224,25 6.5,25 L11,25 L11,27.5 C11,27.776 11.224,28 11.5,28 L20,28 L20,29.051 C18.86,29.283 18,30.293 18,31.5 C18,32.878 19.121,34 20.5,34 C21.879,34 23,32.878 23,31.5 C23,30.293 22.14,29.283 21,29.051 L21,28 L28.5,28 C28.776,28 29,27.776 29,27.5 L29,25 L28,25 L28,27 Z\" id=\"AWS_Step_Functions_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-sfn-controller/v1.0.14/v1.0.0/components/StateMachine.json b/server/meshmodel/aws-sfn-controller/v1.0.14/v1.0.0/components/StateMachine.json new file mode 100644 index 00000000000..62461b13154 --- /dev/null +++ b/server/meshmodel/aws-sfn-controller/v1.0.14/v1.0.0/components/StateMachine.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "StateMachine", + "schema": "{\n \"description\": \"StateMachine is the Schema for the StateMachines API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"StateMachineSpec defines the desired state of StateMachine.\",\n \"properties\": {\n \"definition\": {\n \"description\": \"The Amazon States Language definition of the state machine. See Amazon States\\nLanguage (https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html).\",\n \"type\": \"string\"\n },\n \"loggingConfiguration\": {\n \"description\": \"Defines what execution history events are logged and where they are logged.\\n\\n\\nBy default, the level is set to OFF. For more information see Log Levels\\n(https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html)\\nin the AWS Step Functions User Guide.\",\n \"properties\": {\n \"destinations\": {\n \"items\": {\n \"properties\": {\n \"cloudWatchLogsLogGroup\": {\n \"properties\": {\n \"logGroupARN\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"includeExecutionData\": {\n \"type\": \"boolean\"\n },\n \"level\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The name of the state machine.\\n\\n\\nA name must not contain:\\n\\n\\n - white space\\n\\n\\n - brackets \\u003c \\u003e { } [ ]\\n\\n\\n - wildcard characters ? *\\n\\n\\n - special characters \\\" # % \\\\ ^ | ~ ` $ \\u0026 , ; : /\\n\\n\\n - control characters (U+0000-001F, U+007F-009F)\\n\\n\\nTo enable logging with CloudWatch Logs, the name should only contain 0-9,\\nA-Z, a-z, - and _.\",\n \"type\": \"string\"\n },\n \"roleARN\": {\n \"description\": \"The Amazon Resource Name (ARN) of the IAM role to use for this state machine.\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"Tags to be added when creating a state machine.\\n\\n\\nAn array of key-value pairs. For more information, see Using Cost Allocation\\nTags (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)\\nin the AWS Billing and Cost Management User Guide, and Controlling Access\\nUsing IAM Tags (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_iam-tags.html).\\n\\n\\nTags may only contain Unicode letters, digits, white space, or these symbols:\\n_ . : / = + - @.\",\n \"items\": {\n \"description\": \"Tags are key-value pairs that can be associated with Step Functions state\\nmachines and activities.\\n\\n\\nAn array of key-value pairs. For more information, see Using Cost Allocation\\nTags (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)\\nin the AWS Billing and Cost Management User Guide, and Controlling Access\\nUsing IAM Tags (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_iam-tags.html).\\n\\n\\nTags may only contain Unicode letters, digits, white space, or these symbols:\\n_ . : / = + - @.\",\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tracingConfiguration\": {\n \"description\": \"Selects whether AWS X-Ray tracing is enabled.\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type_\": {\n \"description\": \"Determines whether a Standard or Express state machine is created. The default\\nis STANDARD. You cannot update the type of a state machine once it has been\\ncreated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"definition\",\n \"name\",\n \"roleARN\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"State Machine\",\n \"type\": \"object\"\n}", + "version": "sfn.services.k8s.aws/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "State Machine", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "git://github.com/aws-controllers-k8s/sfn-controller/main/helm" + }, + "model": { + "category": { + "name": "Serverless" + }, + "displayName": "AWS Step Functions", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#E7157B", + "shape": "rectangle", + "source_uri": "git://github.com/aws-controllers-k8s/sfn-controller/main/helm", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Step-Functions_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23,22 L33,22 L33,18 L23,18 L23,22 Z M33.5,17 L22.5,17 C22.224,17 22,17.224 22,17.5 L22,22.5 C22,22.776 22.224,23 22.5,23 L33.5,23 C33.776,23 34,22.776 34,22.5 L34,17.5 C34,17.224 33.776,17 33.5,17 L33.5,17 Z M22,31.5 C22,32.327 21.327,33 20.5,33 C19.673,33 19,32.327 19,31.5 C19,30.673 19.673,30 20.5,30 C21.327,30 22,30.673 22,31.5 L22,31.5 Z M7,24 L16,24 L16,22 L7,22 L7,24 Z M7,18 L7,16 L11,16 L12,16 L16,16 L16,18 L7,18 Z M19,8.5 C19,7.673 19.673,7 20.5,7 C21.327,7 22,7.673 22,8.5 C22,9.327 21.327,10 20.5,10 C19.673,10 19,9.327 19,8.5 L19,8.5 Z M28,27 L12,27 L12,25 L16.5,25 C16.776,25 17,24.776 17,24.5 L17,21.5 C17,21.224 16.776,21 16.5,21 L12,21 L12,19 L16.5,19 C16.776,19 17,18.776 17,18.5 L17,15.5 C17,15.224 16.776,15 16.5,15 L12,15 L12,13 L28,13 L28,15 L29,15 L29,12.5 C29,12.224 28.776,12 28.5,12 L21,12 L21,10.949 C22.14,10.717 23,9.707 23,8.5 C23,7.122 21.879,6 20.5,6 C19.121,6 18,7.122 18,8.5 C18,9.707 18.86,10.717 20,10.949 L20,12 L11.5,12 C11.224,12 11,12.224 11,12.5 L11,15 L6.5,15 C6.224,15 6,15.224 6,15.5 L6,18.5 C6,18.776 6.224,19 6.5,19 L11,19 L11,21 L6.5,21 C6.224,21 6,21.224 6,21.5 L6,24.5 C6,24.776 6.224,25 6.5,25 L11,25 L11,27.5 C11,27.776 11.224,28 11.5,28 L20,28 L20,29.051 C18.86,29.283 18,30.293 18,31.5 C18,32.878 19.121,34 20.5,34 C21.879,34 23,32.878 23,31.5 C23,30.293 22.14,29.283 21,29.051 L21,28 L28.5,28 C28.776,28 29,27.776 29,27.5 L29,25 L28,25 L28,27 Z\" id=\"AWS_Step_Functions_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Step-Functions_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23,22 L33,22 L33,18 L23,18 L23,22 Z M33.5,17 L22.5,17 C22.224,17 22,17.224 22,17.5 L22,22.5 C22,22.776 22.224,23 22.5,23 L33.5,23 C33.776,23 34,22.776 34,22.5 L34,17.5 C34,17.224 33.776,17 33.5,17 L33.5,17 Z M22,31.5 C22,32.327 21.327,33 20.5,33 C19.673,33 19,32.327 19,31.5 C19,30.673 19.673,30 20.5,30 C21.327,30 22,30.673 22,31.5 L22,31.5 Z M7,24 L16,24 L16,22 L7,22 L7,24 Z M7,18 L7,16 L11,16 L12,16 L16,16 L16,18 L7,18 Z M19,8.5 C19,7.673 19.673,7 20.5,7 C21.327,7 22,7.673 22,8.5 C22,9.327 21.327,10 20.5,10 C19.673,10 19,9.327 19,8.5 L19,8.5 Z M28,27 L12,27 L12,25 L16.5,25 C16.776,25 17,24.776 17,24.5 L17,21.5 C17,21.224 16.776,21 16.5,21 L12,21 L12,19 L16.5,19 C16.776,19 17,18.776 17,18.5 L17,15.5 C17,15.224 16.776,15 16.5,15 L12,15 L12,13 L28,13 L28,15 L29,15 L29,12.5 C29,12.224 28.776,12 28.5,12 L21,12 L21,10.949 C22.14,10.717 23,9.707 23,8.5 C23,7.122 21.879,6 20.5,6 C19.121,6 18,7.122 18,8.5 C18,9.707 18.86,10.717 20,10.949 L20,12 L11.5,12 C11.224,12 11,12.224 11,12.5 L11,15 L6.5,15 C6.224,15 6,15.224 6,15.5 L6,18.5 C6,18.776 6.224,19 6.5,19 L11,19 L11,21 L6.5,21 C6.224,21 6,21.224 6,21.5 L6,24.5 C6,24.776 6.224,25 6.5,25 L11,25 L11,27.5 C11,27.776 11.224,28 11.5,28 L20,28 L20,29.051 C18.86,29.283 18,30.293 18,31.5 C18,32.878 19.121,34 20.5,34 C21.879,34 23,32.878 23,31.5 C23,30.293 22.14,29.283 21,29.051 L21,28 L28.5,28 C28.776,28 29,27.776 29,27.5 L29,25 L28,25 L28,27 Z\" id=\"AWS_Step_Functions_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.0.14" + }, + "name": "aws-sfn-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Serverless", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#E7157B", + "shape": "rectangle", + "svgColor": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Step-Functions_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath d=\"M23,22 L33,22 L33,18 L23,18 L23,22 Z M33.5,17 L22.5,17 C22.224,17 22,17.224 22,17.5 L22,22.5 C22,22.776 22.224,23 22.5,23 L33.5,23 C33.776,23 34,22.776 34,22.5 L34,17.5 C34,17.224 33.776,17 33.5,17 L33.5,17 Z M22,31.5 C22,32.327 21.327,33 20.5,33 C19.673,33 19,32.327 19,31.5 C19,30.673 19.673,30 20.5,30 C21.327,30 22,30.673 22,31.5 L22,31.5 Z M7,24 L16,24 L16,22 L7,22 L7,24 Z M7,18 L7,16 L11,16 L12,16 L16,16 L16,18 L7,18 Z M19,8.5 C19,7.673 19.673,7 20.5,7 C21.327,7 22,7.673 22,8.5 C22,9.327 21.327,10 20.5,10 C19.673,10 19,9.327 19,8.5 L19,8.5 Z M28,27 L12,27 L12,25 L16.5,25 C16.776,25 17,24.776 17,24.5 L17,21.5 C17,21.224 16.776,21 16.5,21 L12,21 L12,19 L16.5,19 C16.776,19 17,18.776 17,18.5 L17,15.5 C17,15.224 16.776,15 16.5,15 L12,15 L12,13 L28,13 L28,15 L29,15 L29,12.5 C29,12.224 28.776,12 28.5,12 L21,12 L21,10.949 C22.14,10.717 23,9.707 23,8.5 C23,7.122 21.879,6 20.5,6 C19.121,6 18,7.122 18,8.5 C18,9.707 18.86,10.717 20,10.949 L20,12 L11.5,12 C11.224,12 11,12.224 11,12.5 L11,15 L6.5,15 C6.224,15 6,15.224 6,15.5 L6,18.5 C6,18.776 6.224,19 6.5,19 L11,19 L11,21 L6.5,21 C6.224,21 6,21.224 6,21.5 L6,24.5 C6,24.776 6.224,25 6.5,25 L11,25 L11,27.5 C11,27.776 11.224,28 11.5,28 L20,28 L20,29.051 C18.86,29.283 18,30.293 18,31.5 C18,32.878 19.121,34 20.5,34 C21.879,34 23,32.878 23,31.5 C23,30.293 22.14,29.283 21,29.051 L21,28 L28.5,28 C28.776,28 29,27.776 29,27.5 L29,25 L28,25 L28,27 Z\" id=\"AWS_Step_Functions_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" width='40' height='40'\u003e \u003cg id=\"Icon-Architecture/32/Arch_AWS-Step-Functions_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath d=\"M23,22 L33,22 L33,18 L23,18 L23,22 Z M33.5,17 L22.5,17 C22.224,17 22,17.224 22,17.5 L22,22.5 C22,22.776 22.224,23 22.5,23 L33.5,23 C33.776,23 34,22.776 34,22.5 L34,17.5 C34,17.224 33.776,17 33.5,17 L33.5,17 Z M22,31.5 C22,32.327 21.327,33 20.5,33 C19.673,33 19,32.327 19,31.5 C19,30.673 19.673,30 20.5,30 C21.327,30 22,30.673 22,31.5 L22,31.5 Z M7,24 L16,24 L16,22 L7,22 L7,24 Z M7,18 L7,16 L11,16 L12,16 L16,16 L16,18 L7,18 Z M19,8.5 C19,7.673 19.673,7 20.5,7 C21.327,7 22,7.673 22,8.5 C22,9.327 21.327,10 20.5,10 C19.673,10 19,9.327 19,8.5 L19,8.5 Z M28,27 L12,27 L12,25 L16.5,25 C16.776,25 17,24.776 17,24.5 L17,21.5 C17,21.224 16.776,21 16.5,21 L12,21 L12,19 L16.5,19 C16.776,19 17,18.776 17,18.5 L17,15.5 C17,15.224 16.776,15 16.5,15 L12,15 L12,13 L28,13 L28,15 L29,15 L29,12.5 C29,12.224 28.776,12 28.5,12 L21,12 L21,10.949 C22.14,10.717 23,9.707 23,8.5 C23,7.122 21.879,6 20.5,6 C19.121,6 18,7.122 18,8.5 C18,9.707 18.86,10.717 20,10.949 L20,12 L11.5,12 C11.224,12 11,12.224 11,12.5 L11,15 L6.5,15 C6.224,15 6,15.224 6,15.5 L6,18.5 C6,18.776 6.224,19 6.5,19 L11,19 L11,21 L6.5,21 C6.224,21 6,21.224 6,21.5 L6,24.5 C6,24.776 6.224,25 6.5,25 L11,25 L11,27.5 C11,27.776 11.224,28 11.5,28 L20,28 L20,29.051 C18.86,29.283 18,30.293 18,31.5 C18,32.878 19.121,34 20.5,34 C21.879,34 23,32.878 23,31.5 C23,30.293 22.14,29.283 21,29.051 L21,28 L28.5,28 C28.776,28 29,27.776 29,27.5 L29,25 L28,25 L28,27 Z\" id=\"AWS_Step_Functions_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/aws-sfn-controller/v1.0.14/v1.0.0/model.json b/server/meshmodel/aws-sfn-controller/v1.0.14/v1.0.0/model.json new file mode 100644 index 00000000000..456ceb4ccaf --- /dev/null +++ b/server/meshmodel/aws-sfn-controller/v1.0.14/v1.0.0/model.json @@ -0,0 +1,41 @@ +{ + "category": { + "name": "Serverless" + }, + "displayName": "AWS Step Functions", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "capabilities": null, + "isAnnotation": false, + "primaryColor": "#E7157B", + "shape": "rectangle", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Step-Functions_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture-BG/32/Application-Integration\" fill=\"#E7157B\"\u003e \u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\u003e\u003c/rect\u003e \u003c/g\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23,22 L33,22 L33,18 L23,18 L23,22 Z M33.5,17 L22.5,17 C22.224,17 22,17.224 22,17.5 L22,22.5 C22,22.776 22.224,23 22.5,23 L33.5,23 C33.776,23 34,22.776 34,22.5 L34,17.5 C34,17.224 33.776,17 33.5,17 L33.5,17 Z M22,31.5 C22,32.327 21.327,33 20.5,33 C19.673,33 19,32.327 19,31.5 C19,30.673 19.673,30 20.5,30 C21.327,30 22,30.673 22,31.5 L22,31.5 Z M7,24 L16,24 L16,22 L7,22 L7,24 Z M7,18 L7,16 L11,16 L12,16 L16,16 L16,18 L7,18 Z M19,8.5 C19,7.673 19.673,7 20.5,7 C21.327,7 22,7.673 22,8.5 C22,9.327 21.327,10 20.5,10 C19.673,10 19,9.327 19,8.5 L19,8.5 Z M28,27 L12,27 L12,25 L16.5,25 C16.776,25 17,24.776 17,24.5 L17,21.5 C17,21.224 16.776,21 16.5,21 L12,21 L12,19 L16.5,19 C16.776,19 17,18.776 17,18.5 L17,15.5 C17,15.224 16.776,15 16.5,15 L12,15 L12,13 L28,13 L28,15 L29,15 L29,12.5 C29,12.224 28.776,12 28.5,12 L21,12 L21,10.949 C22.14,10.717 23,9.707 23,8.5 C23,7.122 21.879,6 20.5,6 C19.121,6 18,7.122 18,8.5 C18,9.707 18.86,10.717 20,10.949 L20,12 L11.5,12 C11.224,12 11,12.224 11,12.5 L11,15 L6.5,15 C6.224,15 6,15.224 6,15.5 L6,18.5 C6,18.776 6.224,19 6.5,19 L11,19 L11,21 L6.5,21 C6.224,21 6,21.224 6,21.5 L6,24.5 C6,24.776 6.224,25 6.5,25 L11,25 L11,27.5 C11,27.776 11.224,28 11.5,28 L20,28 L20,29.051 C18.86,29.283 18,30.293 18,31.5 C18,32.878 19.121,34 20.5,34 C21.879,34 23,32.878 23,31.5 C23,30.293 22.14,29.283 21,29.051 L21,28 L28.5,28 C28.776,28 29,27.776 29,27.5 L29,25 L28,25 L28,27 Z\" id=\"AWS_Step_Functions_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" height=\"20\" width=\"20\"\u003e \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Icon-Architecture/32/Arch_AWS-Step-Functions_32\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"\u003e \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23,22 L33,22 L33,18 L23,18 L23,22 Z M33.5,17 L22.5,17 C22.224,17 22,17.224 22,17.5 L22,22.5 C22,22.776 22.224,23 22.5,23 L33.5,23 C33.776,23 34,22.776 34,22.5 L34,17.5 C34,17.224 33.776,17 33.5,17 L33.5,17 Z M22,31.5 C22,32.327 21.327,33 20.5,33 C19.673,33 19,32.327 19,31.5 C19,30.673 19.673,30 20.5,30 C21.327,30 22,30.673 22,31.5 L22,31.5 Z M7,24 L16,24 L16,22 L7,22 L7,24 Z M7,18 L7,16 L11,16 L12,16 L16,16 L16,18 L7,18 Z M19,8.5 C19,7.673 19.673,7 20.5,7 C21.327,7 22,7.673 22,8.5 C22,9.327 21.327,10 20.5,10 C19.673,10 19,9.327 19,8.5 L19,8.5 Z M28,27 L12,27 L12,25 L16.5,25 C16.776,25 17,24.776 17,24.5 L17,21.5 C17,21.224 16.776,21 16.5,21 L12,21 L12,19 L16.5,19 C16.776,19 17,18.776 17,18.5 L17,15.5 C17,15.224 16.776,15 16.5,15 L12,15 L12,13 L28,13 L28,15 L29,15 L29,12.5 C29,12.224 28.776,12 28.5,12 L21,12 L21,10.949 C22.14,10.717 23,9.707 23,8.5 C23,7.122 21.879,6 20.5,6 C19.121,6 18,7.122 18,8.5 C18,9.707 18.86,10.717 20,10.949 L20,12 L11.5,12 C11.224,12 11,12.224 11,12.5 L11,15 L6.5,15 C6.224,15 6,15.224 6,15.5 L6,18.5 C6,18.776 6.224,19 6.5,19 L11,19 L11,21 L6.5,21 C6.224,21 6,21.224 6,21.5 L6,24.5 C6,24.776 6.224,25 6.5,25 L11,25 L11,27.5 C11,27.776 11.224,28 11.5,28 L20,28 L20,29.051 C18.86,29.283 18,30.293 18,31.5 C18,32.878 19.121,34 20.5,34 C21.879,34 23,32.878 23,31.5 C23,30.293 22.14,29.283 21,29.051 L21,28 L28.5,28 C28.776,28 29,27.776 29,27.5 L29,25 L28,25 L28,27 Z\" id=\"AWS_Step_Functions_Icon_32_Squid\" fill=\"#FFFFFF\"\u003e\u003c/path\u003e \u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "v1.0.14" + }, + "name": "aws-sfn-controller", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "github", + "name": "Github", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Serverless", + "version": "v1.0.0", + "components": null, + "relationships": null + } \ No newline at end of file diff --git a/server/meshmodel/cass-operator/0.53.3/v1.0.0/components/CassandraDatacenter.json b/server/meshmodel/cass-operator/0.53.3/v1.0.0/components/CassandraDatacenter.json new file mode 100644 index 00000000000..f14e9bc0fbe --- /dev/null +++ b/server/meshmodel/cass-operator/0.53.3/v1.0.0/components/CassandraDatacenter.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "CassandraDatacenter", + "schema": "{\n \"description\": \"CassandraDatacenter is the Schema for the cassandradatacenters API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"CassandraDatacenterSpec defines the desired state of a CassandraDatacenter\",\n \"format\": \"textarea\",\n \"properties\": {\n \"additionalAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Additional Annotations allows to define additional labels that will be included in all objects created by the operator. Note, user can override values set by default from the cass-operator and doing so could break cass-operator functionality.\",\n \"type\": \"object\"\n },\n \"additionalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Additional Labels allows to define additional labels that will be included in all objects created by the operator. Note, user can override values set by default from the cass-operator and doing so could break cass-operator functionality.\",\n \"type\": \"object\"\n },\n \"additionalSeeds\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalServiceConfig\": {\n \"description\": \"AdditionalServiceConfig allows to define additional parameters that are included in the created Services. Note, user can override values set by cass-operator and doing so could break cass-operator functionality.\\nAvoid label \\\"cass-operator\\\" and anything that starts with \\\"cassandra.datastax.com/\\\"\",\n \"properties\": {\n \"additionalSeedService\": {\n \"description\": \"ServiceConfigAdditions exposes additional options for each service\",\n \"properties\": {\n \"additionalAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"additionalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"allpodsService\": {\n \"description\": \"ServiceConfigAdditions exposes additional options for each service\",\n \"properties\": {\n \"additionalAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"additionalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"dcService\": {\n \"description\": \"ServiceConfigAdditions exposes additional options for each service\",\n \"properties\": {\n \"additionalAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"additionalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nodePortService\": {\n \"description\": \"ServiceConfigAdditions exposes additional options for each service\",\n \"properties\": {\n \"additionalAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"additionalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"seedService\": {\n \"description\": \"ServiceConfigAdditions exposes additional options for each service\",\n \"properties\": {\n \"additionalAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"additionalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"allowMultipleNodesPerWorker\": {\n \"description\": \"Turning this option on allows multiple server pods to be created on a k8s worker node, by removing the default pod anti affinity rules.\\nBy default the operator creates just one server pod per k8s worker node. Using custom affinity rules might require turning this\\noption on in which case the defaults are not set.\",\n \"type\": \"boolean\"\n },\n \"canaryUpgrade\": {\n \"description\": \"Indicates that configuration and container image changes should only be pushed to\\nthe first rack of the datacenter\",\n \"type\": \"boolean\"\n },\n \"canaryUpgradeCount\": {\n \"description\": \"The number of nodes that will be updated when CanaryUpgrade is true. Note that the value is\\neither 0 or greater than the rack size, then all nodes in the rack will get updated.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"cdc\": {\n \"description\": \"CDC allows configuration of the change data capture agent which can run within the Management API container. Use it to send data to Pulsar.\",\n \"properties\": {\n \"cdcConcurrentProcessors\": {\n \"type\": \"integer\"\n },\n \"cdcPollIntervalM\": {\n \"type\": \"integer\"\n },\n \"cdcWorkingDir\": {\n \"type\": \"string\"\n },\n \"errorCommitLogReprocessEnabled\": {\n \"type\": \"boolean\"\n },\n \"pulsarAuthParams\": {\n \"type\": \"string\"\n },\n \"pulsarAuthPluginClassName\": {\n \"type\": \"string\"\n },\n \"pulsarBatchDelayInMs\": {\n \"type\": \"integer\"\n },\n \"pulsarKeyBasedBatcher\": {\n \"type\": \"boolean\"\n },\n \"pulsarMaxPendingMessages\": {\n \"type\": \"integer\"\n },\n \"pulsarMaxPendingMessagesAcrossPartitions\": {\n \"type\": \"integer\"\n },\n \"pulsarServiceUrl\": {\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"sslAllowInsecureConnection\": {\n \"type\": \"string\"\n },\n \"sslCipherSuites\": {\n \"type\": \"string\"\n },\n \"sslEnabledProtocols\": {\n \"type\": \"string\"\n },\n \"sslHostnameVerificationEnable\": {\n \"type\": \"string\"\n },\n \"sslKeystorePassword\": {\n \"type\": \"string\"\n },\n \"sslKeystorePath\": {\n \"type\": \"string\"\n },\n \"sslProvider\": {\n \"type\": \"string\"\n },\n \"sslTruststorePassword\": {\n \"type\": \"string\"\n },\n \"sslTruststorePath\": {\n \"type\": \"string\"\n },\n \"sslTruststoreType\": {\n \"type\": \"string\"\n },\n \"topicPrefix\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pulsarServiceUrl\"\n ],\n \"type\": \"object\"\n },\n \"clusterName\": {\n \"description\": \"The name by which CQL clients and instances will know the cluster. If the same\\ncluster name is shared by multiple Datacenters in the same Kubernetes namespace,\\nthey will join together in a multi-datacenter cluster.\",\n \"minLength\": 2,\n \"type\": \"string\"\n },\n \"configBuilderImage\": {\n \"description\": \"Container image for the config builder init container. Overrides value from ImageConfig ConfigBuilderImage\",\n \"type\": \"string\"\n },\n \"configBuilderResources\": {\n \"description\": \"Kubernetes resource requests and limits per server config initialization container.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"configSecret\": {\n \"description\": \"ConfigSecret is the name of a secret that contains configuration for Cassandra. The\\nsecret is expected to have a property named config whose value should be a JSON\\nformatted string that should look like this:\\n\\n\\n config: |-\\n {\\n \\\"cassandra-yaml\\\": {\\n \\\"read_request_timeout_in_ms\\\": 10000\\n },\\n \\\"jmv-options\\\": {\\n \\\"max_heap_size\\\": 1024M\\n }\\n }\\n\\n\\nConfigSecret is mutually exclusive with Config. ConfigSecret takes precedence and\\nwill be used exclusively if both properties are set. The operator sets a watch such\\nthat an update to the secret will trigger an update of the StatefulSets.\",\n \"type\": \"string\"\n },\n \"datacenterName\": {\n \"description\": \"DatacenterName allows to override the name of the Cassandra datacenter. Kubernetes objects will be named after a sanitized version of it if set, and if not metadata.name. In Cassandra the DC name will be overridden by this value.\\nIt may generate some confusion as objects created for the DC will have a different name than the CasandraDatacenter object itself.\\nThis setting can create conflicts if multiple DCs coexist in the same namespace if metadata.name for a DC with no override is set to the same value as the override name of another DC.\\nUse cautiously.\",\n \"type\": \"string\"\n },\n \"disableSystemLoggerSidecar\": {\n \"description\": \"Configuration for disabling the simple log tailing sidecar container. Our default is to have it enabled.\",\n \"type\": \"boolean\"\n },\n \"dockerImageRunsAsCassandra\": {\n \"description\": \"DEPRECATED This setting does nothing and defaults to true. Use SecurityContext instead.\",\n \"type\": \"boolean\"\n },\n \"dseWorkloads\": {\n \"properties\": {\n \"analyticsEnabled\": {\n \"type\": \"boolean\"\n },\n \"graphEnabled\": {\n \"type\": \"boolean\"\n },\n \"searchEnabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"forceUpgradeRacks\": {\n \"description\": \"Rack names in this list are set to the latest StatefulSet configuration\\neven if Cassandra nodes are down. Use this to recover from an upgrade that couldn't\\nroll out.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"managementApiAuth\": {\n \"description\": \"Config for the Management API certificates\",\n \"properties\": {\n \"insecure\": {\n \"type\": \"object\"\n },\n \"manual\": {\n \"properties\": {\n \"clientSecretName\": {\n \"type\": \"string\"\n },\n \"serverSecretName\": {\n \"type\": \"string\"\n },\n \"skipSecretValidation\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"clientSecretName\",\n \"serverSecretName\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"minReadySeconds\": {\n \"description\": \"MinReadySeconds sets the minimum number of seconds for which a newly created pod should be ready without any of its containers crashing, for it to be considered available. Defaults to 5 seconds and is set in the StatefulSet spec.\\nSetting to 0 might cause multiple Cassandra pods to restart at the same time despite PodDisruptionBudget settings.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"networking\": {\n \"properties\": {\n \"hostNetwork\": {\n \"type\": \"boolean\"\n },\n \"nodePort\": {\n \"properties\": {\n \"internode\": {\n \"type\": \"integer\"\n },\n \"internodeSSL\": {\n \"type\": \"integer\"\n },\n \"native\": {\n \"type\": \"integer\"\n },\n \"nativeSSL\": {\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nodeAffinityLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeAffinityLabels to pin the Datacenter, using node affinity\",\n \"type\": \"object\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"A map of label keys and values to restrict Cassandra node scheduling to k8s workers\\nwith matchiing labels.\\nMore info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector\",\n \"type\": \"object\"\n },\n \"podTemplateSpec\": {\n \"description\": \"PodTemplate provides customisation options (labels, annotations, affinity rules, resource requests, and so on) for the cassandra pods\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"Standard object's metadata.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Specification of the desired behavior of the pod.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\",\n \"properties\": {\n \"activeDeadlineSeconds\": {\n \"description\": \"Optional duration in seconds the pod may be active on the node relative to\\nStartTime before the system will actively try to mark it failed and kill associated containers.\\nValue must be a positive integer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"affinity\": {\n \"description\": \"If specified, the pod's scheduling constraints\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"automountServiceAccountToken\": {\n \"description\": \"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.\",\n \"type\": \"boolean\"\n },\n \"containers\": {\n \"description\": \"List of containers belonging to the pod.\\nContainers cannot currently be added or removed.\\nThere must be at least one container in a Pod.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"Set DNS policy for the pod.\\nDefaults to \\\"ClusterFirst\\\".\\nValid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.\\nDNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.\\nTo have DNS options set along with hostNetwork, you have to specify DNS policy\\nexplicitly to 'ClusterFirstWithHostNet'.\",\n \"type\": \"string\"\n },\n \"enableServiceLinks\": {\n \"description\": \"EnableServiceLinks indicates whether information about services should be injected into pod's\\nenvironment variables, matching the syntax of Docker links.\\nOptional: Defaults to true.\",\n \"type\": \"boolean\"\n },\n \"ephemeralContainers\": {\n \"description\": \"List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing\\npod to perform user-initiated actions such as debugging. This list cannot be specified when\\ncreating a pod, and it cannot be modified by updating the pod spec. In order to add an\\nephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.\",\n \"items\": {\n \"description\": \"An EphemeralContainer is a temporary container that you may add to an existing Pod for\\nuser-initiated activities such as debugging. Ephemeral containers have no resource or\\nscheduling guarantees, and they will not be restarted when they exit or when a Pod is\\nremoved or restarted. The kubelet may evict a Pod if an ephemeral container causes the\\nPod to exceed its resource allocation.\\n\\n\\nTo add an ephemeral container, use the ephemeralcontainers subresource of an existing\\nPod. Ephemeral containers may not be removed or restarted.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Lifecycle is not allowed for ephemeral containers.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the ephemeral container specified as a DNS_LABEL.\\nThis name must be unique among all containers, init containers and ephemeral containers.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"Ports are not allowed for ephemeral containers.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources\\nalready allocated to the pod.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for the container to manage the restart behavior of each\\ncontainer within a pod.\\nThis may only be set for init containers. You cannot set this field on\\nephemeral containers.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"Optional: SecurityContext defines the security options the ephemeral container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"targetContainerName\": {\n \"description\": \"If set, the name of the container from PodSpec that this ephemeral container targets.\\nThe ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.\\nIf not set then the ephemeral container uses the namespaces configured in the Pod spec.\\n\\n\\nThe container runtime must implement support for this feature. If the runtime does not\\nsupport namespace targeting then the result of setting this field is undefined.\",\n \"type\": \"string\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"hostAliases\": {\n \"description\": \"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts\\nfile if specified. This is only valid for non-hostNetwork pods.\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\\npod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"hostIPC\": {\n \"description\": \"Use the host's ipc namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostNetwork\": {\n \"description\": \"Host networking requested for this pod. Use the host's network namespace.\\nIf this option is set, the ports that will be used must be specified.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"hostPID\": {\n \"description\": \"Use the host's pid namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostUsers\": {\n \"description\": \"Use the host's user namespace.\\nOptional: Default to true.\\nIf set to true or not present, the pod will be run in the host user namespace, useful\\nfor when the pod needs a feature only available to the host user namespace, such as\\nloading a kernel module with CAP_SYS_MODULE.\\nWhen set to false, a new userns is created for the pod. Setting false is useful for\\nmitigating container breakout vulnerabilities even allowing users to run their\\ncontainers as root without actually having root privileges on the host.\\nThis field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.\",\n \"type\": \"boolean\"\n },\n \"hostname\": {\n \"description\": \"Specifies the hostname of the Pod\\nIf not specified, the pod's hostname will be set to a system-defined value.\",\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.\\nIf specified, these secrets will be passed to individual puller implementations for them to use.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"initContainers\": {\n \"description\": \"List of initialization containers belonging to the pod.\\nInit containers are executed in order prior to containers being started. If any\\ninit container fails, the pod is considered to have failed and is handled according\\nto its restartPolicy. The name for an init container or normal container must be\\nunique among all containers.\\nInit containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.\\nThe resourceRequirements of an init container are taken into account during scheduling\\nby finding the highest request/limit for each resource type, and then using the max of\\nof that value or the sum of the normal containers. Limits are applied to init containers\\nin a similar fashion.\\nInit containers cannot currently be added or removed.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"nodeName\": {\n \"description\": \"NodeName is a request to schedule this pod onto a specific node. If it is non-empty,\\nthe scheduler simply schedules this pod onto that node, assuming that it fits resource\\nrequirements.\",\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is a selector which must be true for the pod to fit on a node.\\nSelector which must match a node's labels for the pod to be scheduled on that node.\\nMore info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"os\": {\n \"description\": \"Specifies the OS of the containers in the pod.\\nSome pod and container fields are restricted if this is set.\\n\\n\\nIf the OS field is set to linux, the following fields must be unset:\\n-securityContext.windowsOptions\\n\\n\\nIf the OS field is set to windows, following fields must be unset:\\n- spec.hostPID\\n- spec.hostIPC\\n- spec.hostUsers\\n- spec.securityContext.seLinuxOptions\\n- spec.securityContext.seccompProfile\\n- spec.securityContext.fsGroup\\n- spec.securityContext.fsGroupChangePolicy\\n- spec.securityContext.sysctls\\n- spec.shareProcessNamespace\\n- spec.securityContext.runAsUser\\n- spec.securityContext.runAsGroup\\n- spec.securityContext.supplementalGroups\\n- spec.containers[*].securityContext.seLinuxOptions\\n- spec.containers[*].securityContext.seccompProfile\\n- spec.containers[*].securityContext.capabilities\\n- spec.containers[*].securityContext.readOnlyRootFilesystem\\n- spec.containers[*].securityContext.privileged\\n- spec.containers[*].securityContext.allowPrivilegeEscalation\\n- spec.containers[*].securityContext.procMount\\n- spec.containers[*].securityContext.runAsUser\\n- spec.containers[*].securityContext.runAsGroup\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name is the name of the operating system. The currently supported values are linux and windows.\\nAdditional value may be defined in future and can be one of:\\nhttps://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration\\nClients should expect to handle additional values and treat unrecognized values in this field as os: null\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"overhead\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.\\nThis field will be autopopulated at admission time by the RuntimeClass admission controller. If\\nthe RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.\\nThe RuntimeClass admission controller will reject Pod create requests which have the overhead already\\nset. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value\\ndefined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md\",\n \"type\": \"object\"\n },\n \"preemptionPolicy\": {\n \"description\": \"PreemptionPolicy is the Policy for preempting pods with lower priority.\\nOne of Never, PreemptLowerPriority.\\nDefaults to PreemptLowerPriority if unset.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"The priority value. Various system components use this field to find the\\npriority of the pod. When Priority Admission Controller is enabled, it\\nprevents users from setting this field. The admission controller populates\\nthis field from PriorityClassName.\\nThe higher the value, the higher the priority.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"priorityClassName\": {\n \"description\": \"If specified, indicates the pod's priority. \\\"system-node-critical\\\" and\\n\\\"system-cluster-critical\\\" are two special keywords which indicate the\\nhighest priorities with the former being the highest priority. Any other\\nname must be defined by creating a PriorityClass object with that name.\\nIf not specified, the pod priority will be default or zero if there is no\\ndefault.\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"If specified, all readiness gates will be evaluated for pod readiness.\\nA pod is ready when all its containers are ready AND\\nall conditions specified in the readiness gates have status equal to \\\"True\\\"\\nMore info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"resourceClaims\": {\n \"description\": \"ResourceClaims defines which ResourceClaims must be allocated\\nand reserved before the Pod is allowed to start. The resources\\nwill be made available to those containers which consume them\\nby name.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable.\",\n \"items\": {\n \"description\": \"PodResourceClaim references exactly one ResourceClaim through a ClaimSource.\\nIt adds a name to it that uniquely identifies the ResourceClaim inside the Pod.\\nContainers that need access to the ResourceClaim reference it with this name.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name uniquely identifies this resource claim inside the pod.\\nThis must be a DNS_LABEL.\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"Source describes where to find the ResourceClaim.\",\n \"properties\": {\n \"resourceClaimName\": {\n \"description\": \"ResourceClaimName is the name of a ResourceClaim object in the same\\nnamespace as this pod.\",\n \"type\": \"string\"\n },\n \"resourceClaimTemplateName\": {\n \"description\": \"ResourceClaimTemplateName is the name of a ResourceClaimTemplate\\nobject in the same namespace as this pod.\\n\\n\\nThe template will be used to create a new ResourceClaim, which will\\nbe bound to this pod. When this pod is deleted, the ResourceClaim\\nwill also be deleted. The pod name and resource name, along with a\\ngenerated component, will be used to form a unique name for the\\nResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.\\n\\n\\nThis field is immutable and no changes will be made to the\\ncorresponding ResourceClaim by the control plane after creating the\\nResourceClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for all containers within the pod.\\nOne of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.\\nDefault to Always.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\",\n \"type\": \"string\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used\\nto run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.\\nIf unset or empty, the \\\"legacy\\\" RuntimeClass will be used, which is an implicit class with an\\nempty definition that uses the default runtime handler.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"If specified, the pod will be dispatched by specified scheduler.\\nIf not specified, the pod will be dispatched by default scheduler.\",\n \"type\": \"string\"\n },\n \"schedulingGates\": {\n \"description\": \"SchedulingGates is an opaque list of values that if specified will block scheduling the pod.\\nIf schedulingGates is not empty, the pod will stay in the SchedulingGated state and the\\nscheduler will not attempt to schedule the pod.\\n\\n\\nSchedulingGates can only be set at pod creation time, and be removed only afterwards.\\n\\n\\nThis is a beta feature enabled by the PodSchedulingReadiness feature gate.\",\n \"items\": {\n \"description\": \"PodSchedulingGate is associated to a Pod to guard its scheduling.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the scheduling gate.\\nEach scheduling gate must have a unique name field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nOptional: Defaults to empty. See type description for default values of each field.\",\n \"properties\": {\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"description\": \"DeprecatedServiceAccount is a depreciated alias for ServiceAccountName.\\nDeprecated: Use serviceAccountName instead.\",\n \"type\": \"string\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run this pod.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\",\n \"type\": \"string\"\n },\n \"setHostnameAsFQDN\": {\n \"description\": \"If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default).\\nIn Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).\\nIn Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\\\\\\\SYSTEM\\\\\\\\CurrentControlSet\\\\\\\\Services\\\\\\\\Tcpip\\\\\\\\Parameters to FQDN.\\nIf a pod does not have FQDN, this has no effect.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"shareProcessNamespace\": {\n \"description\": \"Share a single process namespace between all of the containers in a pod.\\nWhen this is set containers will be able to view and signal processes from other containers\\nin the same pod, and the first process in each container will not be assigned PID 1.\\nHostPID and ShareProcessNamespace cannot both be set.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"subdomain\": {\n \"description\": \"If specified, the fully qualified Pod hostname will be \\\"\\u003chostname\\u003e.\\u003csubdomain\\u003e.\\u003cpod namespace\\u003e.svc.\\u003ccluster domain\\u003e\\\".\\nIf not specified, the pod will not have a domainname at all.\",\n \"type\": \"string\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nIf this value is nil, the default grace period will be used instead.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nDefaults to 30 seconds.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints describes how a group of pods ought to spread across topology\\ndomains. Scheduler will schedule pods in a way which abides by the constraints.\\nAll topologySpreadConstraints are ANDed.\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods.\\nPods that match this label selector are counted to determine the number of pods\\nin their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nMatchLabelKeys cannot be set when LabelSelector isn't set.\\nKeys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P |\\n- if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P P |\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\\n\\n\\nThis is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\\nwhen calculating pod topology spread skew. Options are:\\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating\\npod topology spread skew. Options are:\\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\\nhas a toleration, are included.\\n- Ignore: node taints are ignored. All nodes are included.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\\nthe spread constraint.\\n- DoNotSchedule (default) tells the scheduler not to schedule it.\\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n but giving higher precedence to topologies that would help reduce the\\n skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod\\nif and only if every possible node assignment for that pod would violate\\n\\\"MaxSkew\\\" on some topology.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 3/1/1:\\n| zone1 | zone2 | zone3 |\\n| P P P | P | P |\\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\\nwon't make it *more* imbalanced.\\nIt's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"description\": \"List of volumes that can be mounted by containers belonging to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"name of the volume.\\nMust be a DNS_LABEL and unique within the pod.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"containers\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"racks\": {\n \"description\": \"A list of the named racks in the datacenter, representing independent failure domains. The\\nnumber of racks should match the replication factor in the keyspaces you plan to create, and\\nthe number of racks cannot easily be changed once a datacenter is deployed.\",\n \"items\": {\n \"description\": \"Rack ...\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity rules to set for this rack only. Merged with values from PodTemplateSpec Affinity as well as NodeAffinityLabels. If you wish to override all the default\\nPodAntiAffinity rules, set allowMultipleWorkers to true, otherwise defaults are applied and then these Affinity settings are merged.\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The rack name\",\n \"minLength\": 2,\n \"type\": \"string\"\n },\n \"nodeAffinityLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeAffinityLabels to pin the rack, using node affinity\",\n \"type\": \"object\"\n },\n \"zone\": {\n \"description\": \"Deprecated. Use nodeAffinityLabels instead. DeprecatedZone name to pin the rack, using node affinity\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"ReadOnlyRootFilesystem makes the cassandra container to be run with a read-only root filesystem. Currently only functional when used with the\\nnew k8ssandra-client config builder (Cassandra 4.1 and newer and HCD)\",\n \"type\": \"boolean\"\n },\n \"replaceNodes\": {\n \"description\": \"Deprecated Use CassandraTask replacenode to achieve correct node replacement. A list of pod names that need to be replaced.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"resources\": {\n \"description\": \"Kubernetes resource requests and limits, per pod\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"rollingRestartRequested\": {\n \"description\": \"Deprecated. Use CassandraTask for rolling restarts. Whether to do a rolling restart at the next opportunity. The operator will set this back\\nto false once the restart is in progress.\",\n \"type\": \"boolean\"\n },\n \"serverImage\": {\n \"description\": \"Cassandra server image name. Use of ImageConfig to match ServerVersion is recommended instead of this value.\\nThis value will override anything set in the ImageConfig matching the ServerVersion\\nMore info: https://kubernetes.io/docs/concepts/containers/images\",\n \"type\": \"string\"\n },\n \"serverType\": {\n \"description\": \"Server type: \\\"cassandra\\\", \\\"dse\\\" or \\\"hcd\\\"\",\n \"enum\": [\n \"cassandra\",\n \"dse\",\n \"hcd\"\n ],\n \"type\": \"string\"\n },\n \"serverVersion\": {\n \"description\": \"Version string for config builder,\\nused to generate Cassandra server configuration\",\n \"pattern\": \"(6\\\\.[89]\\\\.\\\\d+)|(3\\\\.11\\\\.\\\\d+)|(4\\\\.\\\\d+\\\\.\\\\d+)|(5\\\\.\\\\d+\\\\.\\\\d+)|(1\\\\.\\\\d+\\\\.\\\\d+)\",\n \"type\": \"string\"\n },\n \"serviceAccount\": {\n \"description\": \"Deprecated DeprecatedServiceAccount Use ServiceAccountName instead, which takes precedence. The k8s service account to use for the server pods\",\n \"type\": \"string\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the Kubernetes service account to use for the server pods. This takes presedence over DeprecatedServiceAccount and both take precedence over\\nsetting it in the PodTemplateSpec.\",\n \"type\": \"string\"\n },\n \"size\": {\n \"description\": \"Desired number of Cassandra server nodes\",\n \"format\": \"int32\",\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"stopped\": {\n \"description\": \"A stopped CassandraDatacenter will have no running server pods, like using \\\"stop\\\" with\\ntraditional System V init scripts. Other Kubernetes resources will be left intact, and volumes\\nwill re-attach when the CassandraDatacenter workload is resumed.\",\n \"type\": \"boolean\"\n },\n \"storageConfig\": {\n \"description\": \"StorageConfig describes the persistent storage request of each server node\",\n \"properties\": {\n \"additionalVolumes\": {\n \"items\": {\n \"description\": \"AdditionalVolumes defines additional storage configurations\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Mount path into cassandra container\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the pvc / volume\",\n \"pattern\": \"[a-z0-9]([-a-z0-9]*[a-z0-9])?\",\n \"type\": \"string\"\n },\n \"pvcSpec\": {\n \"description\": \"PVCSpec is a persistent volume claim spec. Either this or VolumeSource is required.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeSource\": {\n \"description\": \"VolumeSource to mount the volume from (such as ConfigMap / Secret). This or PVCSpec is required.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"cassandraDataVolumeClaimSpec\": {\n \"description\": \"PersistentVolumeClaimSpec describes the common attributes of storage devices\\nand allows a Source for provider-specific attributes\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"superuserSecretName\": {\n \"description\": \"This secret defines the username and password for the Cassandra server superuser.\\nIf it is omitted, we will generate a secret instead.\",\n \"type\": \"string\"\n },\n \"systemLoggerImage\": {\n \"description\": \"Container image for the log tailing sidecar container. Overrides value from ImageConfig SystemLoggerImage\",\n \"type\": \"string\"\n },\n \"systemLoggerResources\": {\n \"description\": \"Kubernetes resource requests and limits per system logger container.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations applied to the Cassandra pod. Note that these cannot be overridden with PodTemplateSpec.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"users\": {\n \"description\": \"Cassandra users to bootstrap\",\n \"items\": {\n \"properties\": {\n \"secretName\": {\n \"type\": \"string\"\n },\n \"superuser\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"secretName\",\n \"superuser\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"clusterName\",\n \"serverType\",\n \"serverVersion\",\n \"size\",\n \"storageConfig\"\n ],\n \"type\": \"string\"\n }\n },\n \"title\": \"Cassandra Datacenter\",\n \"type\": \"object\"\n}", + "version": "cassandra.datastax.com/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "Cassandra Datacenter", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/cass-operator-0.53.3.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "Apache Cassandra", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#373535", + "secondaryColor": "#00D3A9", + "shape": "barrel", + "source_uri": "https://helm.k8ssandra.io/stable/cass-operator-0.53.3.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" xmlns:_xmlns=\"xmlns\" _xmlns:dc=\"http://purl.org/dc/elements/1.1/\" _xmlns:cc=\"http://creativecommons.org/ns#\" _xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" _xmlns:svg=\"http://www.w3.org/2000/svg\" version=\"1.1\" width=\"20\" height=\"20\" id=\"svg2816\" xml:space=\"preserve\"\u003e\u003ctitle xmlns=\"http://www.w3.org/2000/svg\" id=\"title3537\"\u003eApache Cassandra\u003c/title\u003e\u003cmetadata xmlns=\"http://www.w3.org/2000/svg\" id=\"metadata2822\"\u003e\u003cRDF xmlns=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\u003e\u003cWork xmlns=\"http://creativecommons.org/ns#\" xmlns:_=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" _:about=\"\"\u003e\u003cformat xmlns=\"http://purl.org/dc/elements/1.1/\"\u003eimage/svg+xml\u003c/format\u003e\u003ctype xmlns=\"http://purl.org/dc/elements/1.1/\" _:resource=\"http://purl.org/dc/dcmitype/StillImage\"\u003e\u003c/type\u003e\u003ctitle xmlns=\"http://purl.org/dc/elements/1.1/\"\u003eApache Cassandra\u003c/title\u003e\u003clicense xmlns=\"http://creativecommons.org/ns#\" _:resource=\"Apache License\"\u003e\u003c/license\u003e\u003ccreator xmlns=\"http://purl.org/dc/elements/1.1/\"\u003e\u003cAgent xmlns=\"http://creativecommons.org/ns#\"\u003e\u003ctitle xmlns=\"http://purl.org/dc/elements/1.1/\"\u003eApache Software Foundation\u003c/title\u003e\u003c/Agent\u003e\u003c/creator\u003e\u003csource xmlns=\"http://purl.org/dc/elements/1.1/\"\u003ehttps://svn.apache.org/repos/asf/cassandra/logo/cassandra.svg\u003c/source\u003e\u003c/Work\u003e\u003c/RDF\u003e\u003c/metadata\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\" id=\"defs2820\"\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2832\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2834\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2844\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2846\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2852\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 96.0078,715.93 88.2902,0 0,-62.176 -88.2902,0 0,62.176 z\" id=\"path2854\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2868\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2870\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2880\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2882\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2908\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2910\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2936\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2938\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2944\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 121.202,708.378 45.899,0 0,-45.859 -45.899,0 0,45.859 z\" id=\"path2946\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2960\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2962\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2968\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 40.4033,726.188 212.4017,0 0,-61.818 -212.4017,0 0,61.818 z\" id=\"path2970\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2988\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2990\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2996\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 39.5195,688.644 199.3805,0 0,-73.818 -199.3805,0 0,73.818 z\" id=\"path2998\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath3016\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path3018\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(-62.668647,-74.06425)\" id=\"layer1\" style=\"display:inline\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"matrix(1.25,0,0,-1.25,19.117647,990)\" id=\"g3012\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath3016)\" id=\"g3014\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(61.4912,609.1372)\" id=\"g3020\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 1.824,0 3.552,-0.432 4.417,-1.296 4.561,-2.641 3.36,-4.801 2.592,-4.801 1.68,-4.465 0.816,-4.272 -0.24,-4.272 c -4.368,0 -6.529,-4.513 -6.529,-8.977 0,-2.784 0.96,-4.465 3.169,-4.465 2.352,0 4.752,1.584 6.096,2.784 0.336,-0.239 0.768,-1.008 0.768,-1.872 0,-0.96 -0.288,-1.872 -1.152,-2.736 -1.536,-1.536 -4.128,-2.832 -7.873,-2.832 -4.32,0 -7.296,2.448 -7.296,8.161 C -13.057,-6.721 -8.113,0 -0.048,0 L 0,0 z\" id=\"path3022\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(75.6021,591.6636)\" id=\"g3024\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.352,0 6.625,4.129 7.825,12.001 0.048,0.48 0.096,0.624 0.192,1.104 -0.528,0.192 -1.248,0.336 -1.969,0.336 -1.776,0 -3.6,-0.528 -5.232,-2.736 -1.68,-2.352 -2.4,-5.28 -2.4,-7.633 C -1.584,1.057 -1.008,0 -0.048,0 L 0,0 z m -7.729,2.16 c 0,2.832 0.96,7.777 4.561,11.377 3.072,3.168 6.816,3.937 10.225,3.937 2.256,0 5.328,-0.72 7.248,-1.105 -0.48,-2.112 -1.632,-10.08 -2.16,-14.688 -0.24,-1.969 -0.336,-4.705 -0.24,-5.713 -1.584,-0.672 -4.56,-0.864 -5.377,-0.864 -0.431,0 -0.528,1.968 -0.383,3.84 0.047,0.624 0.144,1.536 0.191,1.92 -1.872,-3.12 -5.568,-5.76 -9.456,-5.76 -2.784,0 -4.609,2.304 -4.609,7.008 l 0,0.048 z\" id=\"path3026\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(101.8579,609.1372)\" id=\"g3028\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 1.968,0 3.84,-0.72 4.705,-1.632 -0.048,-1.345 -1.104,-3.6 -2.785,-2.976 -0.72,0.24 -1.44,0.431 -2.4,0.431 -1.296,0 -2.4,-0.576 -2.4,-1.775 0,-0.912 0.672,-1.585 3.888,-3.841 2.305,-1.68 3.217,-3.168 3.217,-5.28 0,-3.505 -3.313,-7.297 -9.073,-7.297 -2.352,0 -4.417,0.912 -5.089,1.872 -0.864,1.44 -0.192,4.272 0.769,3.793 1.248,-0.624 3.312,-1.297 4.992,-1.297 1.584,0 2.592,0.721 2.592,1.681 0,0.815 -0.72,1.536 -3.648,3.6 -2.449,1.824 -3.217,3.504 -3.217,5.424 0,3.984 3.409,7.297 8.401,7.297 L 0,0 z\" id=\"path3030\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(118.417,609.1372)\" id=\"g3032\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 1.969,0 3.841,-0.72 4.705,-1.632 -0.048,-1.345 -1.103,-3.6 -2.784,-2.976 -0.72,0.24 -1.441,0.431 -2.4,0.431 -1.296,0 -2.4,-0.576 -2.4,-1.775 0,-0.912 0.672,-1.585 3.888,-3.841 2.304,-1.68 3.216,-3.168 3.216,-5.28 0,-3.505 -3.313,-7.297 -9.073,-7.297 -2.352,0 -4.416,0.912 -5.088,1.872 -0.864,1.44 -0.192,4.272 0.768,3.793 1.248,-0.624 3.312,-1.297 4.992,-1.297 1.584,0 2.592,0.721 2.592,1.681 0,0.815 -0.72,1.536 -3.648,3.6 -2.448,1.824 -3.216,3.504 -3.216,5.424 0,3.984 3.408,7.297 8.401,7.297 L 0,0 z\" id=\"path3034\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(133.5361,591.6636)\" id=\"g3036\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.353,0 6.625,4.129 7.825,12.001 0.048,0.48 0.097,0.624 0.193,1.104 -0.529,0.192 -1.248,0.336 -1.969,0.336 -1.776,0 -3.6,-0.528 -5.233,-2.736 -1.679,-2.352 -2.4,-5.28 -2.4,-7.633 C -1.584,1.057 -1.008,0 -0.047,0 L 0,0 z m -7.729,2.16 c 0,2.832 0.961,7.777 4.561,11.377 3.072,3.168 6.816,3.937 10.225,3.937 2.256,0 5.329,-0.72 7.249,-1.105 -0.48,-2.112 -1.632,-10.08 -2.16,-14.688 -0.241,-1.969 -0.336,-4.705 -0.241,-5.713 -1.584,-0.672 -4.559,-0.864 -5.376,-0.864 -0.431,0 -0.528,1.968 -0.384,3.84 0.048,0.624 0.144,1.536 0.192,1.92 -1.872,-3.12 -5.568,-5.76 -9.456,-5.76 -2.785,0 -4.61,2.304 -4.61,7.008 l 0,0.048 z\" id=\"path3038\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(158.688,602.897)\" id=\"g3040\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.209,3.552 5.088,6.24 9.121,6.24 3.408,0 4.512,-3.168 3.889,-7.68 -0.336,-2.113 -0.912,-5.137 -1.297,-7.921 -0.336,-2.353 -0.576,-4.464 -0.527,-5.905 -1.248,-0.624 -4.897,-0.864 -5.713,-0.864 -0.336,0 -0.385,2.641 0.048,5.425 0.383,2.304 1.2,6.48 1.584,8.881 0.241,1.391 0.192,3.072 -1.152,3.072 -1.777,0 -6,-2.833 -8.113,-14.449 -0.145,-0.96 -0.528,-1.536 -1.057,-1.872 -0.719,-0.433 -2.256,-0.817 -5.375,-0.865 0.576,2.928 1.488,8.929 2.16,13.345 0.623,4.032 0.864,6.625 0.719,7.633 0.817,0.288 5.09,1.2 5.568,1.2 C 0.385,6.24 0.48,4.752 0,1.151 -0.047,0.815 -0.096,0.288 -0.145,0 L 0,0 z\" id=\"path3042\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(183.0728,591.7114)\" id=\"g3044\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.111,0 6.385,3.937 7.584,10.897 0.049,0.384 0.193,1.104 0.289,1.537 -0.625,0.576 -1.441,0.96 -2.736,0.96 -4.85,0 -7.01,-5.809 -7.01,-9.986 C -1.873,1.152 -1.104,0 -0.049,0 L 0,0 z m -3.168,-4.944 c -3.072,0 -4.992,2.736 -4.992,7.44 0,7.777 4.847,14.93 13.008,14.93 1.441,0 2.736,-0.384 3.552,-0.864 0.432,2.208 1.44,9.025 1.489,11.041 1.343,0.24 4.224,0.671 5.519,0.671 0.53,0 0.674,-0.527 0.481,-1.727 C 14.736,19.346 12.674,5.521 12.289,2.448 12,-0.144 11.953,-2.688 12,-4.128 10.465,-4.8 7.344,-4.944 6.529,-4.944 6.191,-4.944 6,-2.736 6.096,-0.768 6.145,-0.144 6.24,0.769 6.24,0.912 3.84,-3.024 0.527,-4.944 -3.121,-4.944 l -0.047,0 z\" id=\"path3046\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(208.0317,602.2241)\" id=\"g3048\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 2.545,5.665 5.568,6.913 7.537,6.913 8.162,6.913 9.121,6.529 9.553,6.049 9.746,4.465 8.498,1.297 7.393,0.097 6.816,0.385 6.098,0.673 5.281,0.673 c -1.633,0 -4.849,-2.545 -6.865,-13.489 -0.145,-0.913 -0.432,-1.297 -0.959,-1.537 -0.816,-0.48 -4.033,-0.864 -5.568,-0.912 0.718,3.937 1.966,11.953 2.447,16.658 0.144,1.2 0.191,3.408 0.096,4.272 0.912,0.432 4.513,1.248 5.328,1.248 0.433,0 0.769,-2.641 0.095,-6.913 L 0,0 z\" id=\"path3050\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(224.9751,591.6636)\" id=\"g3052\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.354,0 6.625,4.129 7.826,12.001 0.047,0.48 0.096,0.624 0.192,1.104 -0.528,0.192 -1.248,0.336 -1.969,0.336 -1.776,0 -3.6,-0.528 -5.233,-2.736 -1.679,-2.352 -2.4,-5.28 -2.4,-7.633 C -1.584,1.057 -1.008,0 -0.047,0 L 0,0 z m -7.729,2.16 c 0,2.832 0.961,7.777 4.561,11.377 3.072,3.168 6.816,3.937 10.225,3.937 2.256,0 5.328,-0.72 7.25,-1.105 -0.481,-2.112 -1.633,-10.08 -2.161,-14.688 -0.24,-1.969 -0.337,-4.705 -0.24,-5.713 -1.584,-0.672 -4.56,-0.864 -5.377,-0.864 -0.431,0 -0.527,1.968 -0.384,3.84 0.048,0.624 0.144,1.536 0.193,1.92 -1.873,-3.12 -5.568,-5.76 -9.457,-5.76 -2.785,0 -4.61,2.304 -4.61,7.008 l 0,0.048 z\" id=\"path3054\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\n\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(-62.668647,-74.06425)\" id=\"layer2\" style=\"display:inline\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"matrix(1.25,0,0,-1.25,19.117647,990)\" id=\"g4555\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2828\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2832)\" id=\"g2830\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(210.8784,690.4834)\" id=\"g2836\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 1.584,-18.452 -27.455,-36.014 -64.859,-39.223 -37.404,-3.209 -69.01,9.151 -70.592,27.602 -1.584,18.455 27.455,36.016 64.859,39.225 C -33.188,30.812 -1.582,18.455 0,0\" id=\"path2838\" style=\"fill:#bbe6fb;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2840\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2844)\" id=\"g2842\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2848\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2850\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2856\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2852)\" id=\"g2858\" style=\"opacity:0.35000604\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(141.3843,715.9233)\" id=\"g2860\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -14.268,0.232 -30.964,-5.433 -43.387,-10.738 -1.293,-3.726 -1.989,-7.689 -1.989,-11.797 0,-21.888 19.764,-39.634 44.145,-39.634 24.381,0 44.145,17.746 44.145,39.634 0,6.927 -1.984,13.435 -5.463,19.101 C 27.512,-1.889 13.842,-0.225 0,0\" id=\"path2862\" style=\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2864\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2868)\" id=\"g2866\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(140.1528,715.9277)\" id=\"g2872\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -7.899,0.482 -21.514,-3.639 -32.867,-7.75 -1.725,-4.071 -2.683,-8.526 -2.683,-13.201 0,-19.178 17.388,-34.725 35.782,-34.725 18.273,0 34.44,15.572 35.782,34.725 0.436,6.237 -1.711,12.114 -4.692,17.181 C 19.552,-1.697 7.061,-0.431 0,0\" id=\"path2874\" style=\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2876\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2880)\" id=\"g2878\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(119.8818,697.4946)\" id=\"g2884\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 0.969,2.146 2.437,3.197 3.859,4.996 3.701,5.422 3.355,6.815 3.355,7.298 c 0,2.156 1.749,3.906 3.906,3.906 0.509,0 0.995,-0.101 1.44,-0.278 6.465,4.927 14.976,7.075 23.529,5.163 0.781,-0.176 1.547,-0.389 2.299,-0.623 C 26.076,16.638 16.548,13.644 10.067,8.413 10.265,7.946 10.814,6.611 10.814,6.074 10.814,3.917 9.418,3.392 7.261,3.392 6.771,3.392 6.303,3.486 5.87,3.651 4.406,1.685 2.612,-2.06 1.734,-4.401 c 3.584,-3.206 6.822,-4.368 11.042,-5.945 -0.011,0.201 0.145,0.387 0.145,0.592 0,6.503 5.725,11.788 12.229,11.788 5.828,0 10.654,-4.238 11.596,-9.798 2.908,1.85 5.72,3.268 7.863,6.01 -0.5,0.61 -1.039,2.337 -1.039,3.187 0,1.957 1.588,3.544 3.545,3.544 0.277,0 0.543,-0.04 0.802,-0.1 1.088,2.236 1.909,4.606 2.434,7.05 -10.17,7.529 -29.847,6.502 -29.847,6.502 0,0 -15.658,0.817 -26.258,-4.349 C -5.047,8.969 -3.008,4.11 0,0\" id=\"path2886\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(168.4907,700.4282)\" id=\"g2888\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 0.719,-0.648 1.111,-1.217 1.42,-1.771 0.951,-1.71 -0.957,-3.275 -2.914,-3.275 -0.199,0 -0.391,0.027 -0.582,0.059 -2.205,-3.446 -6.067,-7.865 -9.498,-10.089 5.261,-0.862 10.222,-2.969 14.17,-6.225 2.875,5.151 5.08,12.589 5.08,18.907 0,4.809 -2.123,8.334 -5.328,10.92 C 2.18,5.95 0.805,2.347 0,0\" id=\"path2890\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(125.7842,667.8032)\" id=\"g2892\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 1.753,4.841 6.065,8.592 10.144,11.892 9.547,12.709 8.652,14.732 8.279,15.69 3.304,17.203 -1.098,20.035 -4.512,23.784 -4.537,23.675 -4.568,23.569 -4.594,23.46 -5.237,20.579 -5.355,17.692 -5.035,14.876 -2.653,14.432 -0.85,12.345 -0.85,9.834 -0.85,8.345 -2.155,6.187 -3.168,5.248 -2.067,2.872 -1.316,1.726 0,0\" id=\"path2894\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(125.4756,663.7393)\" id=\"g2896\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -2.091,2.079 -3.537,6.226 -4.894,8.83 -0.254,-0.039 -0.514,-0.066 -0.78,-0.066 -2.836,0 -5.807,2.38 -5.135,5.134 0.372,1.524 1.424,2.521 3.137,3.353 -0.39,3.157 -0.496,7.695 0.237,10.977 0.21,0.939 0.655,1.379 0.95,2.273 -3.129,4.579 -5.151,10.589 -5.151,16.552 0,0.218 0.011,0.433 0.016,0.649 -5.288,-2.652 -9.253,-6.83 -9.253,-13.407 0,-14.548 8.379,-28.819 20.846,-34.413 C -0.018,-0.079 -0.01,-0.039 0,0\" id=\"path2898\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(156.1313,683.8511)\" id=\"g2900\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -1.611,-4.582 -5.967,-7.873 -11.1,-7.873 -2.746,0 -5.265,0.947 -7.267,2.521 -4.127,-3.214 -7.871,-8.86 -9.774,-13.758 0.854,-0.919 1.449,-1.675 2.407,-2.49 2.887,-0.752 6.863,0 9.988,0 12.57,0 23.703,5.592 30.086,15.398 C 10.096,-3.263 5.09,-0.466 0,0\" id=\"path2902\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2904\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2908)\" id=\"g2906\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(119.5596,695.7944)\" id=\"g2912\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 0.969,2.146 2.184,4.132 3.605,5.931 -0.158,0.425 -0.25,0.884 -0.25,1.367 0,2.156 1.749,3.906 3.906,3.906 0.509,0 0.995,-0.101 1.44,-0.278 6.465,4.927 14.976,7.075 23.529,5.163 0.781,-0.176 1.547,-0.389 2.299,-0.623 -8.453,1.172 -17.187,-1.419 -23.668,-6.651 0.198,-0.466 0.306,-0.98 0.306,-1.517 0,-2.157 -1.749,-3.906 -3.906,-3.906 -0.49,0 -0.958,0.094 -1.391,0.259 -1.464,-1.966 -2.661,-4.138 -3.539,-6.48 3.078,-3.317 6.856,-5.94 11.075,-7.517 -0.01,0.201 -0.031,0.4 -0.031,0.605 0,6.503 5.271,11.775 11.775,11.775 5.828,0 10.654,-4.238 11.596,-9.798 2.908,1.85 5.492,4.226 7.634,6.968 -0.5,0.61 -0.81,1.379 -0.81,2.229 0,1.957 1.588,3.544 3.545,3.544 0.277,0 0.543,-0.04 0.802,-0.1 1.088,2.236 1.909,4.606 2.434,7.05 -10.17,7.529 -29.847,6.502 -29.847,6.502 0,0 -15.658,0.817 -26.258,-4.349 C -5.047,8.969 -3.008,4.11 0,0\" id=\"path2914\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(169.0396,699.8481)\" id=\"g2916\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 0.719,-0.648 1.18,-1.577 1.18,-2.621 0,-1.957 -1.588,-3.545 -3.545,-3.545 -0.199,0 -0.391,0.027 -0.582,0.059 -2.205,-3.446 -5.127,-6.384 -8.559,-8.608 5.072,-0.793 9.846,-2.945 13.793,-6.201 2.875,5.151 4.518,11.084 4.518,17.402 0,4.809 -2.123,8.334 -5.328,10.92 C 1.309,4.83 0.805,2.347 0,0\" id=\"path2918\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(126.3252,666.6401)\" id=\"g2920\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 1.753,4.841 4.799,9.185 8.878,12.484 8.281,13.302 7.789,14.195 7.416,15.153 2.44,16.666 -1.961,19.498 -5.375,23.247 -5.4,23.138 -5.432,23.032 -5.457,22.923 -6.101,20.042 -6.219,17.155 -5.898,14.339 -3.517,13.895 -1.713,11.808 -1.713,9.297 -1.713,7.808 -2.352,6.469 -3.365,5.53 -2.446,3.582 -1.316,1.726 0,0\" id=\"path2922\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(125.4619,663.7983)\" id=\"g2924\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -2.091,2.079 -3.846,4.467 -5.202,7.07 -0.255,-0.039 -0.515,-0.065 -0.78,-0.065 -2.836,0 -5.135,2.299 -5.135,5.134 0,2.032 1.184,3.784 2.897,4.616 -0.389,3.156 -0.257,6.432 0.477,9.714 0.21,0.938 0.466,1.854 0.761,2.749 -3.129,4.578 -4.962,10.113 -4.962,16.076 0,0.218 0.01,0.433 0.015,0.648 -5.288,-2.651 -9.253,-6.83 -9.253,-13.406 0,-14.549 8.688,-27.06 21.155,-32.654 C -0.018,-0.079 -0.01,-0.039 0,0\" id=\"path2926\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(155.8091,682.1509)\" id=\"g2928\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -1.611,-4.582 -5.967,-7.873 -11.1,-7.873 -2.746,0 -5.265,0.947 -7.267,2.521 -4.127,-3.214 -7.242,-7.595 -9.144,-12.494 0.853,-0.919 1.765,-1.785 2.723,-2.599 2.888,-0.752 5.917,-1.155 9.042,-1.155 12.57,0 23.621,6.49 30.004,16.295 C 10.014,-2.365 5.09,-0.466 0,0\" id=\"path2930\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2932\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2936)\" id=\"g2934\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2940\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2942\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2948\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2944)\" id=\"g2950\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(156.2222,685.187)\" id=\"g2952\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 10.879,2.595 -0.041,3.152 8.846,9.944 -1.238,6.329 5.615,15.826 -3.85,9.535 l 3.309,11.117 -6.5,-9.163 -0.148,11.579 -4.277,-10.314 -3.566,10.437 0.193,-12.295 -6.163,11.021 3.335,-11.702 -9.997,7.27 7.831,-9.84 -12.411,4.564 9.795,-7.247 -12.56,-0.386 12.842,-3.314 -12.853,-2.779 12.687,-0.92 -10.699,-6.851 11.017,3.994 -7.644,-9.681 9.659,7.79 -3.478,-12.991 7.457,10.572 -1.045,-12.486 4.233,11.319 3.603,-11.897 0.876,11.933 5.348,-10.181 -3.16,11.645 9.793,-7.586 -6.322,9.672 10.744,-4.186 -8.215,8.073 L 10.85,-4.164 0,0 z\" id=\"path2954\" style=\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2956\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2960)\" id=\"g2958\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2964\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2966\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2972\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2968)\" id=\"g2974\" style=\"opacity:0.35000604\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(40.4033,664.3701)\" id=\"g2976\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 33.74,33.739 60.687,44.155 85.143,48.91 3.236,0.629 3.848,7.7 3.848,7.7 0,0 0.453,-5.208 2.718,-5.887 2.264,-0.68 5.207,8.152 5.207,8.152 0,0 -2.717,-7.926 0,-8.379 2.718,-0.453 7.699,7.699 7.699,7.699 0,0 -2.037,-7.019 -0.678,-7.472 1.357,-0.453 8.15,10.189 8.15,10.189 0,0 -4.076,-7.019 -0.226,-7.699 3.851,-0.679 9.467,4.791 9.467,4.791 0,0 -4.416,-5.005 -2.448,-5.696 8.379,-2.945 15.159,7.945 15.159,7.945 0,0 -1.571,-4.775 -5.647,-9.983 8.83,-2.264 15.389,11.039 15.389,11.039 l -6.559,-13.303 c 3.397,-1.813 16.985,13.812 16.985,13.812 0,0 -7.02,-12.228 -11.096,-14.718 2.264,-1.812 10.416,5.434 10.416,5.434 0,0 -6.567,-8.151 -4.076,-8.604 3.623,-2.944 16.982,15.171 16.982,15.171 0,0 -5.207,-10.642 -12.906,-19.021 6.435,-3.219 22.418,17.436 22.418,17.436 0,0 -0.453,-6.567 -12.002,-16.983 8.605,1.132 19.701,17.436 19.701,17.436 0,0 -4.076,-12.228 -13.814,-20.832 8.449,0.879 21.964,21.738 21.964,21.738 0,0 -5.207,-14.492 -15.849,-22.871 11.775,-2.604 28.758,14.945 28.758,14.945 0,0 -6.68,-12.455 -15.399,-17.549 9.738,-3.736 23.098,11.662 23.098,11.662 0,0 -13.36,-20.607 -34.645,-19.701 -6.984,0.297 -28.109,21.188 -73.368,19.474 C 44.609,42.57 31.929,17.209 0,0\" id=\"path2978\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(41.7861,666.9326)\" id=\"g2980\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 33.74,33.739 60.686,44.154 85.142,48.91 3.237,0.629 3.849,7.699 3.849,7.699 0,0 0.452,-5.209 2.718,-5.887 2.264,-0.679 5.207,8.151 5.207,8.151 0,0 -2.717,-7.926 0,-8.378 2.718,-0.452 7.699,7.699 7.699,7.699 0,0 -2.037,-7.019 -0.68,-7.472 1.359,-0.453 8.152,10.19 8.152,10.19 0,0 -4.076,-7.02 -0.226,-7.699 3.849,-0.68 9.467,4.79 9.467,4.79 0,0 -4.416,-5.005 -2.448,-5.696 8.379,-2.944 15.157,7.945 15.157,7.945 0,0 -1.571,-4.775 -5.645,-9.983 8.83,-2.265 15.389,11.04 15.389,11.04 l -6.559,-13.305 c 3.397,-1.811 16.983,13.812 16.983,13.812 0,0 -7.018,-12.226 -11.094,-14.717 2.264,-1.812 10.416,5.434 10.416,5.434 0,0 -6.567,-8.152 -4.076,-8.604 3.623,-2.945 16.982,15.171 16.982,15.171 0,0 -5.209,-10.643 -12.906,-19.021 6.435,-3.22 22.418,17.436 22.418,17.436 0,0 -0.453,-6.568 -12.002,-16.984 8.605,1.133 19.701,17.437 19.701,17.437 0,0 -4.076,-12.228 -13.814,-20.833 8.449,0.879 21.964,21.738 21.964,21.738 0,0 -5.207,-14.492 -15.849,-22.87 11.775,-2.604 28.758,14.944 28.758,14.944 0,0 -6.68,-12.453 -15.399,-17.548 9.738,-3.736 23.098,11.662 23.098,11.662 0,0 -13.36,-20.607 -34.647,-19.701 -6.982,0.298 -28.107,21.189 -73.367,19.474 C 44.609,42.57 31.928,17.209 0,0\" id=\"path2982\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2984\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2988)\" id=\"g2986\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2992\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2994\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g3000\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2996)\" id=\"g3002\" style=\"opacity:0.35000604\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(39.5195,660.6802)\" id=\"g3004\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 17.832,-8.945 34.137,1.358 54.686,-4.433 15.623,-4.404 34.645,-9.833 60.458,-6.096 25.814,3.735 47.893,14.944 58.424,34.985 3.283,8.943 16.642,-2.039 16.642,-2.039 0,0 -9.736,4.076 -9.509,2.151 0.226,-1.924 14.605,-8.604 14.605,-8.604 0,0 -13.021,4.076 -12.228,1.019 0.793,-3.057 16.302,-15.285 16.302,-15.285 0,0 -17.548,13.36 -19.019,11.549 -1.473,-1.812 7.472,-9.172 7.472,-9.172 0,0 -14.832,9.172 -20.041,6.467 -3.746,-1.943 15.399,-14.506 15.399,-14.506 0,0 -12.455,9.512 -15.399,7.021 -2.943,-2.492 14.04,-22.871 14.04,-22.871 0,0 -19.249,20.833 -21.172,19.814 -1.926,-1.019 5.32,-10.983 5.32,-10.983 0,0 -9.51,10.417 -12.113,8.605 -2.604,-1.812 13.586,-28.871 13.586,-28.871 0,0 -17.549,27.738 -24.795,23.098 11.379,-24.966 7.133,-28.533 7.133,-28.533 0,0 -1.452,25.47 -15.625,24.796 -7.133,-0.34 3.396,-19.021 3.396,-19.021 0,0 -9.691,17.062 -16.145,16.722 11.895,-22.511 7.655,-31.667 7.655,-31.667 0,0 1.967,19.226 -14.166,29.925 6.113,-5.433 -3.836,-29.925 -3.836,-29.925 0,0 8.752,36.091 -6.455,29.21 -2.403,-1.085 -0.17,-18.002 -0.17,-18.002 0,0 -3.057,19.362 -7.641,18.342 -2.673,-0.593 -16.984,-26.833 -16.984,-26.833 0,0 11.719,28.362 8.153,27.173 -2.598,-0.867 -7.473,-12.568 -7.473,-12.568 0,0 2.377,11.549 0,12.228 -2.377,0.68 -15.625,-12.228 -15.625,-12.228 0,0 9.851,11.549 8.152,13.927 -2.574,3.603 -5.591,3.772 -9.171,2.377 -5.209,-2.03 -12.227,-11.548 -12.227,-11.548 0,0 6.996,9.637 5.773,13.247 -1.963,5.8 -22.077,-11.209 -22.077,-11.209 0,0 11.888,11.209 9.171,13.587 -2.717,2.377 -17.471,1.642 -22.078,1.655 C 8.832,-6.454 4.124,-3.267 0,0\" id=\"path3006\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(38.8408,662.7183)\" id=\"g3008\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 17.832,-8.945 34.136,1.358 54.685,-4.434 15.623,-4.402 34.646,-9.832 60.46,-6.095 25.814,3.736 47.891,14.945 58.422,34.984 3.283,8.944 16.642,-2.037 16.642,-2.037 0,0 -9.736,4.075 -9.509,2.15 0.226,-1.924 14.605,-8.604 14.605,-8.604 0,0 -13.021,4.075 -12.228,1.018 0.793,-3.056 16.304,-15.284 16.304,-15.284 0,0 -17.55,13.361 -19.021,11.548 -1.471,-1.811 7.473,-9.17 7.473,-9.17 0,0 -14.833,9.17 -20.041,6.467 -3.747,-1.944 15.398,-14.506 15.398,-14.506 0,0 -12.455,9.511 -15.398,7.02 -2.944,-2.492 14.041,-22.871 14.041,-22.871 0,0 -19.25,20.833 -21.174,19.814 -1.924,-1.02 5.322,-10.982 5.322,-10.982 0,0 -9.512,10.416 -12.115,8.604 -2.604,-1.811 13.586,-28.871 13.586,-28.871 0,0 -17.549,27.739 -24.795,23.097 11.379,-24.965 7.133,-28.532 7.133,-28.532 0,0 -1.452,25.47 -15.625,24.795 -7.133,-0.34 3.396,-19.02 3.396,-19.02 0,0 -9.691,17.063 -16.144,16.723 11.896,-22.512 7.654,-31.668 7.654,-31.668 0,0 1.967,19.227 -14.166,29.926 6.113,-5.434 -3.836,-29.926 -3.836,-29.926 0,0 8.754,36.091 -6.453,29.21 -2.403,-1.086 -0.17,-18.002 -0.17,-18.002 0,0 -3.059,19.361 -7.642,18.342 -2.674,-0.593 -16.985,-26.833 -16.985,-26.833 0,0 11.719,28.362 8.153,27.172 -2.598,-0.865 -7.473,-12.566 -7.473,-12.566 0,0 2.378,11.548 0,12.227 -2.377,0.679 -15.624,-12.227 -15.624,-12.227 0,0 9.851,11.548 8.151,13.926 -2.574,3.603 -5.591,3.771 -9.17,2.376 -5.21,-2.029 -12.228,-11.547 -12.228,-11.547 0,0 6.996,9.638 5.774,13.247 -1.964,5.799 -22.077,-11.209 -22.077,-11.209 0,0 11.888,11.209 9.17,13.586 C 41.778,-5.774 27.024,-6.51 22.417,-6.496 8.831,-6.453 4.124,-3.267 0,0\" id=\"path3010\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" xmlns:_xmlns=\"xmlns\" _xmlns:dc=\"http://purl.org/dc/elements/1.1/\" _xmlns:cc=\"http://creativecommons.org/ns#\" _xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" _xmlns:svg=\"http://www.w3.org/2000/svg\" version=\"1.1\" width=\"20\" height=\"20\" id=\"svg2816\" xml:space=\"preserve\"\u003e\u003ctitle xmlns=\"http://www.w3.org/2000/svg\" id=\"title3537\"\u003eApache Cassandra\u003c/title\u003e\u003cmetadata xmlns=\"http://www.w3.org/2000/svg\" id=\"metadata2822\"\u003e\u003cRDF xmlns=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\u003e\u003cWork xmlns=\"http://creativecommons.org/ns#\" xmlns:_=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" _:about=\"\"\u003e\u003cformat xmlns=\"http://purl.org/dc/elements/1.1/\"\u003eimage/svg+xml\u003c/format\u003e\u003ctype xmlns=\"http://purl.org/dc/elements/1.1/\" _:resource=\"http://purl.org/dc/dcmitype/StillImage\"\u003e\u003c/type\u003e\u003ctitle xmlns=\"http://purl.org/dc/elements/1.1/\"\u003eApache Cassandra\u003c/title\u003e\u003clicense xmlns=\"http://creativecommons.org/ns#\" _:resource=\"Apache License\"\u003e\u003c/license\u003e\u003ccreator xmlns=\"http://purl.org/dc/elements/1.1/\"\u003e\u003cAgent xmlns=\"http://creativecommons.org/ns#\"\u003e\u003ctitle xmlns=\"http://purl.org/dc/elements/1.1/\"\u003eApache Software Foundation\u003c/title\u003e\u003c/Agent\u003e\u003c/creator\u003e\u003csource xmlns=\"http://purl.org/dc/elements/1.1/\"\u003ehttps://svn.apache.org/repos/asf/cassandra/logo/cassandra.svg\u003c/source\u003e\u003c/Work\u003e\u003c/RDF\u003e\u003c/metadata\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\" id=\"defs2820\"\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2832\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2834\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2844\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2846\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2852\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 96.0078,715.93 88.2902,0 0,-62.176 -88.2902,0 0,62.176 z\" id=\"path2854\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2868\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2870\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2880\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2882\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2908\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2910\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2936\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2938\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2944\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 121.202,708.378 45.899,0 0,-45.859 -45.899,0 0,45.859 z\" id=\"path2946\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2960\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2962\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2968\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 40.4033,726.188 212.4017,0 0,-61.818 -212.4017,0 0,61.818 z\" id=\"path2970\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2988\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2990\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2996\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 39.5195,688.644 199.3805,0 0,-73.818 -199.3805,0 0,73.818 z\" id=\"path2998\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath3016\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path3018\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(-62.668647,-74.06425)\" id=\"layer1\" style=\"display:inline\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"matrix(1.25,0,0,-1.25,19.117647,990)\" id=\"g3012\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath3016)\" id=\"g3014\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(61.4912,609.1372)\" id=\"g3020\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 1.824,0 3.552,-0.432 4.417,-1.296 4.561,-2.641 3.36,-4.801 2.592,-4.801 1.68,-4.465 0.816,-4.272 -0.24,-4.272 c -4.368,0 -6.529,-4.513 -6.529,-8.977 0,-2.784 0.96,-4.465 3.169,-4.465 2.352,0 4.752,1.584 6.096,2.784 0.336,-0.239 0.768,-1.008 0.768,-1.872 0,-0.96 -0.288,-1.872 -1.152,-2.736 -1.536,-1.536 -4.128,-2.832 -7.873,-2.832 -4.32,0 -7.296,2.448 -7.296,8.161 C -13.057,-6.721 -8.113,0 -0.048,0 L 0,0 z\" id=\"path3022\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(75.6021,591.6636)\" id=\"g3024\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.352,0 6.625,4.129 7.825,12.001 0.048,0.48 0.096,0.624 0.192,1.104 -0.528,0.192 -1.248,0.336 -1.969,0.336 -1.776,0 -3.6,-0.528 -5.232,-2.736 -1.68,-2.352 -2.4,-5.28 -2.4,-7.633 C -1.584,1.057 -1.008,0 -0.048,0 L 0,0 z m -7.729,2.16 c 0,2.832 0.96,7.777 4.561,11.377 3.072,3.168 6.816,3.937 10.225,3.937 2.256,0 5.328,-0.72 7.248,-1.105 -0.48,-2.112 -1.632,-10.08 -2.16,-14.688 -0.24,-1.969 -0.336,-4.705 -0.24,-5.713 -1.584,-0.672 -4.56,-0.864 -5.377,-0.864 -0.431,0 -0.528,1.968 -0.383,3.84 0.047,0.624 0.144,1.536 0.191,1.92 -1.872,-3.12 -5.568,-5.76 -9.456,-5.76 -2.784,0 -4.609,2.304 -4.609,7.008 l 0,0.048 z\" id=\"path3026\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(101.8579,609.1372)\" id=\"g3028\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 1.968,0 3.84,-0.72 4.705,-1.632 -0.048,-1.345 -1.104,-3.6 -2.785,-2.976 -0.72,0.24 -1.44,0.431 -2.4,0.431 -1.296,0 -2.4,-0.576 -2.4,-1.775 0,-0.912 0.672,-1.585 3.888,-3.841 2.305,-1.68 3.217,-3.168 3.217,-5.28 0,-3.505 -3.313,-7.297 -9.073,-7.297 -2.352,0 -4.417,0.912 -5.089,1.872 -0.864,1.44 -0.192,4.272 0.769,3.793 1.248,-0.624 3.312,-1.297 4.992,-1.297 1.584,0 2.592,0.721 2.592,1.681 0,0.815 -0.72,1.536 -3.648,3.6 -2.449,1.824 -3.217,3.504 -3.217,5.424 0,3.984 3.409,7.297 8.401,7.297 L 0,0 z\" id=\"path3030\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(118.417,609.1372)\" id=\"g3032\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 1.969,0 3.841,-0.72 4.705,-1.632 -0.048,-1.345 -1.103,-3.6 -2.784,-2.976 -0.72,0.24 -1.441,0.431 -2.4,0.431 -1.296,0 -2.4,-0.576 -2.4,-1.775 0,-0.912 0.672,-1.585 3.888,-3.841 2.304,-1.68 3.216,-3.168 3.216,-5.28 0,-3.505 -3.313,-7.297 -9.073,-7.297 -2.352,0 -4.416,0.912 -5.088,1.872 -0.864,1.44 -0.192,4.272 0.768,3.793 1.248,-0.624 3.312,-1.297 4.992,-1.297 1.584,0 2.592,0.721 2.592,1.681 0,0.815 -0.72,1.536 -3.648,3.6 -2.448,1.824 -3.216,3.504 -3.216,5.424 0,3.984 3.408,7.297 8.401,7.297 L 0,0 z\" id=\"path3034\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(133.5361,591.6636)\" id=\"g3036\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.353,0 6.625,4.129 7.825,12.001 0.048,0.48 0.097,0.624 0.193,1.104 -0.529,0.192 -1.248,0.336 -1.969,0.336 -1.776,0 -3.6,-0.528 -5.233,-2.736 -1.679,-2.352 -2.4,-5.28 -2.4,-7.633 C -1.584,1.057 -1.008,0 -0.047,0 L 0,0 z m -7.729,2.16 c 0,2.832 0.961,7.777 4.561,11.377 3.072,3.168 6.816,3.937 10.225,3.937 2.256,0 5.329,-0.72 7.249,-1.105 -0.48,-2.112 -1.632,-10.08 -2.16,-14.688 -0.241,-1.969 -0.336,-4.705 -0.241,-5.713 -1.584,-0.672 -4.559,-0.864 -5.376,-0.864 -0.431,0 -0.528,1.968 -0.384,3.84 0.048,0.624 0.144,1.536 0.192,1.92 -1.872,-3.12 -5.568,-5.76 -9.456,-5.76 -2.785,0 -4.61,2.304 -4.61,7.008 l 0,0.048 z\" id=\"path3038\" style=\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(158.688,602.897)\" id=\"g3040\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.209,3.552 5.088,6.24 9.121,6.24 3.408,0 4.512,-3.168 3.889,-7.68 -0.336,-2.113 -0.912,-5.137 -1.297,-7.921 -0.336,-2.353 -0.576,-4.464 -0.527,-5.905 -1.248,-0.624 -4.897,-0.864 -5.713,-0.864 -0.336,0 -0.385,2.641 0.048,5.425 0.383,2.304 1.2,6.48 1.584,8.881 0.241,1.391 0.192,3.072 -1.152,3.072 -1.777,0 -6,-2.833 -8.113,-14.449 -0.145,-0.96 -0.528,-1.536 -1.057,-1.872 -0.719,-0.433 -2.256,-0.817 -5.375,-0.865 0.576,2.928 1.488,8.929 2.16,13.345 0.623,4.032 0.864,6.625 0.719,7.633 0.817,0.288 5.09,1.2 5.568,1.2 C 0.385,6.24 0.48,4.752 0,1.151 -0.047,0.815 -0.096,0.288 -0.145,0 L 0,0 z\" id=\"path3042\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(183.0728,591.7114)\" id=\"g3044\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.111,0 6.385,3.937 7.584,10.897 0.049,0.384 0.193,1.104 0.289,1.537 -0.625,0.576 -1.441,0.96 -2.736,0.96 -4.85,0 -7.01,-5.809 -7.01,-9.986 C -1.873,1.152 -1.104,0 -0.049,0 L 0,0 z m -3.168,-4.944 c -3.072,0 -4.992,2.736 -4.992,7.44 0,7.777 4.847,14.93 13.008,14.93 1.441,0 2.736,-0.384 3.552,-0.864 0.432,2.208 1.44,9.025 1.489,11.041 1.343,0.24 4.224,0.671 5.519,0.671 0.53,0 0.674,-0.527 0.481,-1.727 C 14.736,19.346 12.674,5.521 12.289,2.448 12,-0.144 11.953,-2.688 12,-4.128 10.465,-4.8 7.344,-4.944 6.529,-4.944 6.191,-4.944 6,-2.736 6.096,-0.768 6.145,-0.144 6.24,0.769 6.24,0.912 3.84,-3.024 0.527,-4.944 -3.121,-4.944 l -0.047,0 z\" id=\"path3046\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(208.0317,602.2241)\" id=\"g3048\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 2.545,5.665 5.568,6.913 7.537,6.913 8.162,6.913 9.121,6.529 9.553,6.049 9.746,4.465 8.498,1.297 7.393,0.097 6.816,0.385 6.098,0.673 5.281,0.673 c -1.633,0 -4.849,-2.545 -6.865,-13.489 -0.145,-0.913 -0.432,-1.297 -0.959,-1.537 -0.816,-0.48 -4.033,-0.864 -5.568,-0.912 0.718,3.937 1.966,11.953 2.447,16.658 0.144,1.2 0.191,3.408 0.096,4.272 0.912,0.432 4.513,1.248 5.328,1.248 0.433,0 0.769,-2.641 0.095,-6.913 L 0,0 z\" id=\"path3050\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(224.9751,591.6636)\" id=\"g3052\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.354,0 6.625,4.129 7.826,12.001 0.047,0.48 0.096,0.624 0.192,1.104 -0.528,0.192 -1.248,0.336 -1.969,0.336 -1.776,0 -3.6,-0.528 -5.233,-2.736 -1.679,-2.352 -2.4,-5.28 -2.4,-7.633 C -1.584,1.057 -1.008,0 -0.047,0 L 0,0 z m -7.729,2.16 c 0,2.832 0.961,7.777 4.561,11.377 3.072,3.168 6.816,3.937 10.225,3.937 2.256,0 5.328,-0.72 7.25,-1.105 -0.481,-2.112 -1.633,-10.08 -2.161,-14.688 -0.24,-1.969 -0.337,-4.705 -0.24,-5.713 -1.584,-0.672 -4.56,-0.864 -5.377,-0.864 -0.431,0 -0.527,1.968 -0.384,3.84 0.048,0.624 0.144,1.536 0.193,1.92 -1.873,-3.12 -5.568,-5.76 -9.457,-5.76 -2.785,0 -4.61,2.304 -4.61,7.008 l 0,0.048 z\" id=\"path3054\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\n\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(-62.668647,-74.06425)\" id=\"layer2\" style=\"display:inline\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"matrix(1.25,0,0,-1.25,19.117647,990)\" id=\"g4555\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2828\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2832)\" id=\"g2830\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(210.8784,690.4834)\" id=\"g2836\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 1.584,-18.452 -27.455,-36.014 -64.859,-39.223 -37.404,-3.209 -69.01,9.151 -70.592,27.602 -1.584,18.455 27.455,36.016 64.859,39.225 C -33.188,30.812 -1.582,18.455 0,0\" id=\"path2838\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2840\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2844)\" id=\"g2842\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2848\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2850\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2856\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2852)\" id=\"g2858\" style=\"opacity:0.35000604\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(141.3843,715.9233)\" id=\"g2860\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -14.268,0.232 -30.964,-5.433 -43.387,-10.738 -1.293,-3.726 -1.989,-7.689 -1.989,-11.797 0,-21.888 19.764,-39.634 44.145,-39.634 24.381,0 44.145,17.746 44.145,39.634 0,6.927 -1.984,13.435 -5.463,19.101 C 27.512,-1.889 13.842,-0.225 0,0\" id=\"path2862\" style=\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2864\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2868)\" id=\"g2866\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(140.1528,715.9277)\" id=\"g2872\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -7.899,0.482 -21.514,-3.639 -32.867,-7.75 -1.725,-4.071 -2.683,-8.526 -2.683,-13.201 0,-19.178 17.388,-34.725 35.782,-34.725 18.273,0 34.44,15.572 35.782,34.725 0.436,6.237 -1.711,12.114 -4.692,17.181 C 19.552,-1.697 7.061,-0.431 0,0\" id=\"path2874\" style=\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2876\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2880)\" id=\"g2878\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(119.8818,697.4946)\" id=\"g2884\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 0.969,2.146 2.437,3.197 3.859,4.996 3.701,5.422 3.355,6.815 3.355,7.298 c 0,2.156 1.749,3.906 3.906,3.906 0.509,0 0.995,-0.101 1.44,-0.278 6.465,4.927 14.976,7.075 23.529,5.163 0.781,-0.176 1.547,-0.389 2.299,-0.623 C 26.076,16.638 16.548,13.644 10.067,8.413 10.265,7.946 10.814,6.611 10.814,6.074 10.814,3.917 9.418,3.392 7.261,3.392 6.771,3.392 6.303,3.486 5.87,3.651 4.406,1.685 2.612,-2.06 1.734,-4.401 c 3.584,-3.206 6.822,-4.368 11.042,-5.945 -0.011,0.201 0.145,0.387 0.145,0.592 0,6.503 5.725,11.788 12.229,11.788 5.828,0 10.654,-4.238 11.596,-9.798 2.908,1.85 5.72,3.268 7.863,6.01 -0.5,0.61 -1.039,2.337 -1.039,3.187 0,1.957 1.588,3.544 3.545,3.544 0.277,0 0.543,-0.04 0.802,-0.1 1.088,2.236 1.909,4.606 2.434,7.05 -10.17,7.529 -29.847,6.502 -29.847,6.502 0,0 -15.658,0.817 -26.258,-4.349 C -5.047,8.969 -3.008,4.11 0,0\" id=\"path2886\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(168.4907,700.4282)\" id=\"g2888\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 0.719,-0.648 1.111,-1.217 1.42,-1.771 0.951,-1.71 -0.957,-3.275 -2.914,-3.275 -0.199,0 -0.391,0.027 -0.582,0.059 -2.205,-3.446 -6.067,-7.865 -9.498,-10.089 5.261,-0.862 10.222,-2.969 14.17,-6.225 2.875,5.151 5.08,12.589 5.08,18.907 0,4.809 -2.123,8.334 -5.328,10.92 C 2.18,5.95 0.805,2.347 0,0\" id=\"path2890\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(125.7842,667.8032)\" id=\"g2892\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 1.753,4.841 6.065,8.592 10.144,11.892 9.547,12.709 8.652,14.732 8.279,15.69 3.304,17.203 -1.098,20.035 -4.512,23.784 -4.537,23.675 -4.568,23.569 -4.594,23.46 -5.237,20.579 -5.355,17.692 -5.035,14.876 -2.653,14.432 -0.85,12.345 -0.85,9.834 -0.85,8.345 -2.155,6.187 -3.168,5.248 -2.067,2.872 -1.316,1.726 0,0\" id=\"path2894\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(125.4756,663.7393)\" id=\"g2896\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -2.091,2.079 -3.537,6.226 -4.894,8.83 -0.254,-0.039 -0.514,-0.066 -0.78,-0.066 -2.836,0 -5.807,2.38 -5.135,5.134 0.372,1.524 1.424,2.521 3.137,3.353 -0.39,3.157 -0.496,7.695 0.237,10.977 0.21,0.939 0.655,1.379 0.95,2.273 -3.129,4.579 -5.151,10.589 -5.151,16.552 0,0.218 0.011,0.433 0.016,0.649 -5.288,-2.652 -9.253,-6.83 -9.253,-13.407 0,-14.548 8.379,-28.819 20.846,-34.413 C -0.018,-0.079 -0.01,-0.039 0,0\" id=\"path2898\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(156.1313,683.8511)\" id=\"g2900\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -1.611,-4.582 -5.967,-7.873 -11.1,-7.873 -2.746,0 -5.265,0.947 -7.267,2.521 -4.127,-3.214 -7.871,-8.86 -9.774,-13.758 0.854,-0.919 1.449,-1.675 2.407,-2.49 2.887,-0.752 6.863,0 9.988,0 12.57,0 23.703,5.592 30.086,15.398 C 10.096,-3.263 5.09,-0.466 0,0\" id=\"path2902\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2904\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2908)\" id=\"g2906\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(119.5596,695.7944)\" id=\"g2912\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 0.969,2.146 2.184,4.132 3.605,5.931 -0.158,0.425 -0.25,0.884 -0.25,1.367 0,2.156 1.749,3.906 3.906,3.906 0.509,0 0.995,-0.101 1.44,-0.278 6.465,4.927 14.976,7.075 23.529,5.163 0.781,-0.176 1.547,-0.389 2.299,-0.623 -8.453,1.172 -17.187,-1.419 -23.668,-6.651 0.198,-0.466 0.306,-0.98 0.306,-1.517 0,-2.157 -1.749,-3.906 -3.906,-3.906 -0.49,0 -0.958,0.094 -1.391,0.259 -1.464,-1.966 -2.661,-4.138 -3.539,-6.48 3.078,-3.317 6.856,-5.94 11.075,-7.517 -0.01,0.201 -0.031,0.4 -0.031,0.605 0,6.503 5.271,11.775 11.775,11.775 5.828,0 10.654,-4.238 11.596,-9.798 2.908,1.85 5.492,4.226 7.634,6.968 -0.5,0.61 -0.81,1.379 -0.81,2.229 0,1.957 1.588,3.544 3.545,3.544 0.277,0 0.543,-0.04 0.802,-0.1 1.088,2.236 1.909,4.606 2.434,7.05 -10.17,7.529 -29.847,6.502 -29.847,6.502 0,0 -15.658,0.817 -26.258,-4.349 C -5.047,8.969 -3.008,4.11 0,0\" id=\"path2914\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(169.0396,699.8481)\" id=\"g2916\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 0.719,-0.648 1.18,-1.577 1.18,-2.621 0,-1.957 -1.588,-3.545 -3.545,-3.545 -0.199,0 -0.391,0.027 -0.582,0.059 -2.205,-3.446 -5.127,-6.384 -8.559,-8.608 5.072,-0.793 9.846,-2.945 13.793,-6.201 2.875,5.151 4.518,11.084 4.518,17.402 0,4.809 -2.123,8.334 -5.328,10.92 C 1.309,4.83 0.805,2.347 0,0\" id=\"path2918\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(126.3252,666.6401)\" id=\"g2920\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 1.753,4.841 4.799,9.185 8.878,12.484 8.281,13.302 7.789,14.195 7.416,15.153 2.44,16.666 -1.961,19.498 -5.375,23.247 -5.4,23.138 -5.432,23.032 -5.457,22.923 -6.101,20.042 -6.219,17.155 -5.898,14.339 -3.517,13.895 -1.713,11.808 -1.713,9.297 -1.713,7.808 -2.352,6.469 -3.365,5.53 -2.446,3.582 -1.316,1.726 0,0\" id=\"path2922\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(125.4619,663.7983)\" id=\"g2924\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -2.091,2.079 -3.846,4.467 -5.202,7.07 -0.255,-0.039 -0.515,-0.065 -0.78,-0.065 -2.836,0 -5.135,2.299 -5.135,5.134 0,2.032 1.184,3.784 2.897,4.616 -0.389,3.156 -0.257,6.432 0.477,9.714 0.21,0.938 0.466,1.854 0.761,2.749 -3.129,4.578 -4.962,10.113 -4.962,16.076 0,0.218 0.01,0.433 0.015,0.648 -5.288,-2.651 -9.253,-6.83 -9.253,-13.406 0,-14.549 8.688,-27.06 21.155,-32.654 C -0.018,-0.079 -0.01,-0.039 0,0\" id=\"path2926\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(155.8091,682.1509)\" id=\"g2928\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -1.611,-4.582 -5.967,-7.873 -11.1,-7.873 -2.746,0 -5.265,0.947 -7.267,2.521 -4.127,-3.214 -7.242,-7.595 -9.144,-12.494 0.853,-0.919 1.765,-1.785 2.723,-2.599 2.888,-0.752 5.917,-1.155 9.042,-1.155 12.57,0 23.621,6.49 30.004,16.295 C 10.014,-2.365 5.09,-0.466 0,0\" id=\"path2930\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2932\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2936)\" id=\"g2934\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2940\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2942\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2948\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2944)\" id=\"g2950\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(156.2222,685.187)\" id=\"g2952\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 10.879,2.595 -0.041,3.152 8.846,9.944 -1.238,6.329 5.615,15.826 -3.85,9.535 l 3.309,11.117 -6.5,-9.163 -0.148,11.579 -4.277,-10.314 -3.566,10.437 0.193,-12.295 -6.163,11.021 3.335,-11.702 -9.997,7.27 7.831,-9.84 -12.411,4.564 9.795,-7.247 -12.56,-0.386 12.842,-3.314 -12.853,-2.779 12.687,-0.92 -10.699,-6.851 11.017,3.994 -7.644,-9.681 9.659,7.79 -3.478,-12.991 7.457,10.572 -1.045,-12.486 4.233,11.319 3.603,-11.897 0.876,11.933 5.348,-10.181 -3.16,11.645 9.793,-7.586 -6.322,9.672 10.744,-4.186 -8.215,8.073 L 10.85,-4.164 0,0 z\" id=\"path2954\" style=\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2956\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2960)\" id=\"g2958\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2964\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2966\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2972\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2968)\" id=\"g2974\" style=\"opacity:0.35000604\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(40.4033,664.3701)\" id=\"g2976\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 33.74,33.739 60.687,44.155 85.143,48.91 3.236,0.629 3.848,7.7 3.848,7.7 0,0 0.453,-5.208 2.718,-5.887 2.264,-0.68 5.207,8.152 5.207,8.152 0,0 -2.717,-7.926 0,-8.379 2.718,-0.453 7.699,7.699 7.699,7.699 0,0 -2.037,-7.019 -0.678,-7.472 1.357,-0.453 8.15,10.189 8.15,10.189 0,0 -4.076,-7.019 -0.226,-7.699 3.851,-0.679 9.467,4.791 9.467,4.791 0,0 -4.416,-5.005 -2.448,-5.696 8.379,-2.945 15.159,7.945 15.159,7.945 0,0 -1.571,-4.775 -5.647,-9.983 8.83,-2.264 15.389,11.039 15.389,11.039 l -6.559,-13.303 c 3.397,-1.813 16.985,13.812 16.985,13.812 0,0 -7.02,-12.228 -11.096,-14.718 2.264,-1.812 10.416,5.434 10.416,5.434 0,0 -6.567,-8.151 -4.076,-8.604 3.623,-2.944 16.982,15.171 16.982,15.171 0,0 -5.207,-10.642 -12.906,-19.021 6.435,-3.219 22.418,17.436 22.418,17.436 0,0 -0.453,-6.567 -12.002,-16.983 8.605,1.132 19.701,17.436 19.701,17.436 0,0 -4.076,-12.228 -13.814,-20.832 8.449,0.879 21.964,21.738 21.964,21.738 0,0 -5.207,-14.492 -15.849,-22.871 11.775,-2.604 28.758,14.945 28.758,14.945 0,0 -6.68,-12.455 -15.399,-17.549 9.738,-3.736 23.098,11.662 23.098,11.662 0,0 -13.36,-20.607 -34.645,-19.701 -6.984,0.297 -28.109,21.188 -73.368,19.474 C 44.609,42.57 31.929,17.209 0,0\" id=\"path2978\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(41.7861,666.9326)\" id=\"g2980\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 33.74,33.739 60.686,44.154 85.142,48.91 3.237,0.629 3.849,7.699 3.849,7.699 0,0 0.452,-5.209 2.718,-5.887 2.264,-0.679 5.207,8.151 5.207,8.151 0,0 -2.717,-7.926 0,-8.378 2.718,-0.452 7.699,7.699 7.699,7.699 0,0 -2.037,-7.019 -0.68,-7.472 1.359,-0.453 8.152,10.19 8.152,10.19 0,0 -4.076,-7.02 -0.226,-7.699 3.849,-0.68 9.467,4.79 9.467,4.79 0,0 -4.416,-5.005 -2.448,-5.696 8.379,-2.944 15.157,7.945 15.157,7.945 0,0 -1.571,-4.775 -5.645,-9.983 8.83,-2.265 15.389,11.04 15.389,11.04 l -6.559,-13.305 c 3.397,-1.811 16.983,13.812 16.983,13.812 0,0 -7.018,-12.226 -11.094,-14.717 2.264,-1.812 10.416,5.434 10.416,5.434 0,0 -6.567,-8.152 -4.076,-8.604 3.623,-2.945 16.982,15.171 16.982,15.171 0,0 -5.209,-10.643 -12.906,-19.021 6.435,-3.22 22.418,17.436 22.418,17.436 0,0 -0.453,-6.568 -12.002,-16.984 8.605,1.133 19.701,17.437 19.701,17.437 0,0 -4.076,-12.228 -13.814,-20.833 8.449,0.879 21.964,21.738 21.964,21.738 0,0 -5.207,-14.492 -15.849,-22.87 11.775,-2.604 28.758,14.944 28.758,14.944 0,0 -6.68,-12.453 -15.399,-17.548 9.738,-3.736 23.098,11.662 23.098,11.662 0,0 -13.36,-20.607 -34.647,-19.701 -6.982,0.298 -28.107,21.189 -73.367,19.474 C 44.609,42.57 31.928,17.209 0,0\" id=\"path2982\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2984\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2988)\" id=\"g2986\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2992\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2994\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g3000\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2996)\" id=\"g3002\" style=\"opacity:0.35000604\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(39.5195,660.6802)\" id=\"g3004\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 17.832,-8.945 34.137,1.358 54.686,-4.433 15.623,-4.404 34.645,-9.833 60.458,-6.096 25.814,3.735 47.893,14.944 58.424,34.985 3.283,8.943 16.642,-2.039 16.642,-2.039 0,0 -9.736,4.076 -9.509,2.151 0.226,-1.924 14.605,-8.604 14.605,-8.604 0,0 -13.021,4.076 -12.228,1.019 0.793,-3.057 16.302,-15.285 16.302,-15.285 0,0 -17.548,13.36 -19.019,11.549 -1.473,-1.812 7.472,-9.172 7.472,-9.172 0,0 -14.832,9.172 -20.041,6.467 -3.746,-1.943 15.399,-14.506 15.399,-14.506 0,0 -12.455,9.512 -15.399,7.021 -2.943,-2.492 14.04,-22.871 14.04,-22.871 0,0 -19.249,20.833 -21.172,19.814 -1.926,-1.019 5.32,-10.983 5.32,-10.983 0,0 -9.51,10.417 -12.113,8.605 -2.604,-1.812 13.586,-28.871 13.586,-28.871 0,0 -17.549,27.738 -24.795,23.098 11.379,-24.966 7.133,-28.533 7.133,-28.533 0,0 -1.452,25.47 -15.625,24.796 -7.133,-0.34 3.396,-19.021 3.396,-19.021 0,0 -9.691,17.062 -16.145,16.722 11.895,-22.511 7.655,-31.667 7.655,-31.667 0,0 1.967,19.226 -14.166,29.925 6.113,-5.433 -3.836,-29.925 -3.836,-29.925 0,0 8.752,36.091 -6.455,29.21 -2.403,-1.085 -0.17,-18.002 -0.17,-18.002 0,0 -3.057,19.362 -7.641,18.342 -2.673,-0.593 -16.984,-26.833 -16.984,-26.833 0,0 11.719,28.362 8.153,27.173 -2.598,-0.867 -7.473,-12.568 -7.473,-12.568 0,0 2.377,11.549 0,12.228 -2.377,0.68 -15.625,-12.228 -15.625,-12.228 0,0 9.851,11.549 8.152,13.927 -2.574,3.603 -5.591,3.772 -9.171,2.377 -5.209,-2.03 -12.227,-11.548 -12.227,-11.548 0,0 6.996,9.637 5.773,13.247 -1.963,5.8 -22.077,-11.209 -22.077,-11.209 0,0 11.888,11.209 9.171,13.587 -2.717,2.377 -17.471,1.642 -22.078,1.655 C 8.832,-6.454 4.124,-3.267 0,0\" id=\"path3006\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(38.8408,662.7183)\" id=\"g3008\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 17.832,-8.945 34.136,1.358 54.685,-4.434 15.623,-4.402 34.646,-9.832 60.46,-6.095 25.814,3.736 47.891,14.945 58.422,34.984 3.283,8.944 16.642,-2.037 16.642,-2.037 0,0 -9.736,4.075 -9.509,2.15 0.226,-1.924 14.605,-8.604 14.605,-8.604 0,0 -13.021,4.075 -12.228,1.018 0.793,-3.056 16.304,-15.284 16.304,-15.284 0,0 -17.55,13.361 -19.021,11.548 -1.471,-1.811 7.473,-9.17 7.473,-9.17 0,0 -14.833,9.17 -20.041,6.467 -3.747,-1.944 15.398,-14.506 15.398,-14.506 0,0 -12.455,9.511 -15.398,7.02 -2.944,-2.492 14.041,-22.871 14.041,-22.871 0,0 -19.25,20.833 -21.174,19.814 -1.924,-1.02 5.322,-10.982 5.322,-10.982 0,0 -9.512,10.416 -12.115,8.604 -2.604,-1.811 13.586,-28.871 13.586,-28.871 0,0 -17.549,27.739 -24.795,23.097 11.379,-24.965 7.133,-28.532 7.133,-28.532 0,0 -1.452,25.47 -15.625,24.795 -7.133,-0.34 3.396,-19.02 3.396,-19.02 0,0 -9.691,17.063 -16.144,16.723 11.896,-22.512 7.654,-31.668 7.654,-31.668 0,0 1.967,19.227 -14.166,29.926 6.113,-5.434 -3.836,-29.926 -3.836,-29.926 0,0 8.754,36.091 -6.453,29.21 -2.403,-1.086 -0.17,-18.002 -0.17,-18.002 0,0 -3.059,19.361 -7.642,18.342 -2.674,-0.593 -16.985,-26.833 -16.985,-26.833 0,0 11.719,28.362 8.153,27.172 -2.598,-0.865 -7.473,-12.566 -7.473,-12.566 0,0 2.378,11.548 0,12.227 -2.377,0.679 -15.624,-12.227 -15.624,-12.227 0,0 9.851,11.548 8.151,13.926 -2.574,3.603 -5.591,3.771 -9.17,2.376 -5.21,-2.029 -12.228,-11.547 -12.228,-11.547 0,0 6.996,9.638 5.774,13.247 -1.964,5.799 -22.077,-11.209 -22.077,-11.209 0,0 11.888,11.209 9.17,13.586 C 41.778,-5.774 27.024,-6.51 22.417,-6.496 8.831,-6.453 4.124,-3.267 0,0\" id=\"path3010\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "0.53.3" + }, + "name": "cass-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/cass-operator/0.53.3/v1.0.0/components/CassandraTask.json b/server/meshmodel/cass-operator/0.53.3/v1.0.0/components/CassandraTask.json new file mode 100644 index 00000000000..1fa2a8201c4 --- /dev/null +++ b/server/meshmodel/cass-operator/0.53.3/v1.0.0/components/CassandraTask.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "CassandraTask", + "schema": "{\n \"description\": \"CassandraTask is the Schema for the cassandrajobs API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"CassandraTaskSpec defines the desired state of CassandraTask\",\n \"properties\": {\n \"concurrencyPolicy\": {\n \"description\": \"Specifics if this task can be run concurrently with other active tasks. Valid values are:\\n- \\\"Allow\\\": allows multiple Tasks to run concurrently on Cassandra cluster\\n- \\\"Forbid\\\" (default): only a single task is executed at once\\nThe \\\"Allow\\\" property is only valid if all the other active Tasks have \\\"Allow\\\" as well.\",\n \"type\": \"string\"\n },\n \"datacenter\": {\n \"description\": \"Which datacenter this task is targetting. Note, this must be a datacenter which the current cass-operator\\ncan access\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"API version of the referent.\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"If referring to a piece of an object instead of an entire object, this string\\nshould contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\\nFor example, if the object reference is to a container within a pod, this would take on a value like:\\n\\\"spec.containers{name}\\\" (where \\\"name\\\" refers to the name of the container that triggered\\nthe event) or if no container name is specified \\\"spec.containers[2]\\\" (container with\\nindex 2 in this pod). This syntax is chosen only to have some well-defined way of\\nreferencing a part of an object.\\nTODO: this design is not final and this field is subject to change in the future.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind of the referent.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/\",\n \"type\": \"string\"\n },\n \"resourceVersion\": {\n \"description\": \"Specific resourceVersion to which this reference is made, if any.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency\",\n \"type\": \"string\"\n },\n \"uid\": {\n \"description\": \"UID of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"jobs\": {\n \"description\": \"Jobs defines the jobs this task will execute (and their order)\",\n \"items\": {\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments are additional parameters for the command\",\n \"properties\": {\n \"end_token\": {\n \"type\": \"string\"\n },\n \"jobs\": {\n \"type\": \"integer\"\n },\n \"keyspace_name\": {\n \"type\": \"string\"\n },\n \"new_tokens\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NewTokens is a map of pod names to their newly-assigned tokens. Required for the move\\ncommand, ignored otherwise. Pods referenced in this map must exist; any existing pod not\\nreferenced in this map will not be moved.\",\n \"type\": \"object\"\n },\n \"no_snapshot\": {\n \"type\": \"boolean\"\n },\n \"no_validate\": {\n \"description\": \"Scrub arguments\",\n \"type\": \"boolean\"\n },\n \"pod_name\": {\n \"type\": \"string\"\n },\n \"rack\": {\n \"type\": \"string\"\n },\n \"skip_corrupted\": {\n \"type\": \"boolean\"\n },\n \"source_datacenter\": {\n \"type\": \"string\"\n },\n \"split_output\": {\n \"description\": \"Compaction arguments\",\n \"type\": \"boolean\"\n },\n \"start_token\": {\n \"type\": \"string\"\n },\n \"tables\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"command\": {\n \"description\": \"Command defines what is run against Cassandra pods\",\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"command\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy indicates the behavior n case of failure. Default is Never.\",\n \"type\": \"string\"\n },\n \"scheduledTime\": {\n \"description\": \"ScheduledTime indicates the earliest possible time this task is executed. This does not necessarily\\nequal to the time it is actually executed (if other tasks are blocking for example). If not set,\\nthe task will be executed immediately.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"ttlSecondsAfterFinished\": {\n \"description\": \"TTLSecondsAfterFinished defines how long the completed job will kept before being cleaned up. If set to 0\\nthe task will not be cleaned up by the cass-operator. If unset, the default time (86400s) is used.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Cassandra Task\",\n \"type\": \"object\"\n}", + "version": "control.k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Cassandra Task", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/cass-operator-0.53.3.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "Apache Cassandra", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#373535", + "secondaryColor": "#00D3A9", + "shape": "barrel", + "source_uri": "https://helm.k8ssandra.io/stable/cass-operator-0.53.3.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" xmlns:_xmlns=\"xmlns\" _xmlns:dc=\"http://purl.org/dc/elements/1.1/\" _xmlns:cc=\"http://creativecommons.org/ns#\" _xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" _xmlns:svg=\"http://www.w3.org/2000/svg\" version=\"1.1\" width=\"20\" height=\"20\" id=\"svg2816\" xml:space=\"preserve\"\u003e\u003ctitle xmlns=\"http://www.w3.org/2000/svg\" id=\"title3537\"\u003eApache Cassandra\u003c/title\u003e\u003cmetadata xmlns=\"http://www.w3.org/2000/svg\" id=\"metadata2822\"\u003e\u003cRDF xmlns=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\u003e\u003cWork xmlns=\"http://creativecommons.org/ns#\" xmlns:_=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" _:about=\"\"\u003e\u003cformat xmlns=\"http://purl.org/dc/elements/1.1/\"\u003eimage/svg+xml\u003c/format\u003e\u003ctype xmlns=\"http://purl.org/dc/elements/1.1/\" _:resource=\"http://purl.org/dc/dcmitype/StillImage\"\u003e\u003c/type\u003e\u003ctitle xmlns=\"http://purl.org/dc/elements/1.1/\"\u003eApache Cassandra\u003c/title\u003e\u003clicense xmlns=\"http://creativecommons.org/ns#\" _:resource=\"Apache License\"\u003e\u003c/license\u003e\u003ccreator xmlns=\"http://purl.org/dc/elements/1.1/\"\u003e\u003cAgent xmlns=\"http://creativecommons.org/ns#\"\u003e\u003ctitle xmlns=\"http://purl.org/dc/elements/1.1/\"\u003eApache Software Foundation\u003c/title\u003e\u003c/Agent\u003e\u003c/creator\u003e\u003csource xmlns=\"http://purl.org/dc/elements/1.1/\"\u003ehttps://svn.apache.org/repos/asf/cassandra/logo/cassandra.svg\u003c/source\u003e\u003c/Work\u003e\u003c/RDF\u003e\u003c/metadata\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\" id=\"defs2820\"\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2832\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2834\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2844\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2846\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2852\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 96.0078,715.93 88.2902,0 0,-62.176 -88.2902,0 0,62.176 z\" id=\"path2854\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2868\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2870\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2880\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2882\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2908\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2910\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2936\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2938\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2944\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 121.202,708.378 45.899,0 0,-45.859 -45.899,0 0,45.859 z\" id=\"path2946\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2960\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2962\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2968\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 40.4033,726.188 212.4017,0 0,-61.818 -212.4017,0 0,61.818 z\" id=\"path2970\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2988\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2990\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2996\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 39.5195,688.644 199.3805,0 0,-73.818 -199.3805,0 0,73.818 z\" id=\"path2998\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath3016\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path3018\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(-62.668647,-74.06425)\" id=\"layer1\" style=\"display:inline\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"matrix(1.25,0,0,-1.25,19.117647,990)\" id=\"g3012\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath3016)\" id=\"g3014\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(61.4912,609.1372)\" id=\"g3020\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 1.824,0 3.552,-0.432 4.417,-1.296 4.561,-2.641 3.36,-4.801 2.592,-4.801 1.68,-4.465 0.816,-4.272 -0.24,-4.272 c -4.368,0 -6.529,-4.513 -6.529,-8.977 0,-2.784 0.96,-4.465 3.169,-4.465 2.352,0 4.752,1.584 6.096,2.784 0.336,-0.239 0.768,-1.008 0.768,-1.872 0,-0.96 -0.288,-1.872 -1.152,-2.736 -1.536,-1.536 -4.128,-2.832 -7.873,-2.832 -4.32,0 -7.296,2.448 -7.296,8.161 C -13.057,-6.721 -8.113,0 -0.048,0 L 0,0 z\" id=\"path3022\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(75.6021,591.6636)\" id=\"g3024\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.352,0 6.625,4.129 7.825,12.001 0.048,0.48 0.096,0.624 0.192,1.104 -0.528,0.192 -1.248,0.336 -1.969,0.336 -1.776,0 -3.6,-0.528 -5.232,-2.736 -1.68,-2.352 -2.4,-5.28 -2.4,-7.633 C -1.584,1.057 -1.008,0 -0.048,0 L 0,0 z m -7.729,2.16 c 0,2.832 0.96,7.777 4.561,11.377 3.072,3.168 6.816,3.937 10.225,3.937 2.256,0 5.328,-0.72 7.248,-1.105 -0.48,-2.112 -1.632,-10.08 -2.16,-14.688 -0.24,-1.969 -0.336,-4.705 -0.24,-5.713 -1.584,-0.672 -4.56,-0.864 -5.377,-0.864 -0.431,0 -0.528,1.968 -0.383,3.84 0.047,0.624 0.144,1.536 0.191,1.92 -1.872,-3.12 -5.568,-5.76 -9.456,-5.76 -2.784,0 -4.609,2.304 -4.609,7.008 l 0,0.048 z\" id=\"path3026\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(101.8579,609.1372)\" id=\"g3028\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 1.968,0 3.84,-0.72 4.705,-1.632 -0.048,-1.345 -1.104,-3.6 -2.785,-2.976 -0.72,0.24 -1.44,0.431 -2.4,0.431 -1.296,0 -2.4,-0.576 -2.4,-1.775 0,-0.912 0.672,-1.585 3.888,-3.841 2.305,-1.68 3.217,-3.168 3.217,-5.28 0,-3.505 -3.313,-7.297 -9.073,-7.297 -2.352,0 -4.417,0.912 -5.089,1.872 -0.864,1.44 -0.192,4.272 0.769,3.793 1.248,-0.624 3.312,-1.297 4.992,-1.297 1.584,0 2.592,0.721 2.592,1.681 0,0.815 -0.72,1.536 -3.648,3.6 -2.449,1.824 -3.217,3.504 -3.217,5.424 0,3.984 3.409,7.297 8.401,7.297 L 0,0 z\" id=\"path3030\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(118.417,609.1372)\" id=\"g3032\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 1.969,0 3.841,-0.72 4.705,-1.632 -0.048,-1.345 -1.103,-3.6 -2.784,-2.976 -0.72,0.24 -1.441,0.431 -2.4,0.431 -1.296,0 -2.4,-0.576 -2.4,-1.775 0,-0.912 0.672,-1.585 3.888,-3.841 2.304,-1.68 3.216,-3.168 3.216,-5.28 0,-3.505 -3.313,-7.297 -9.073,-7.297 -2.352,0 -4.416,0.912 -5.088,1.872 -0.864,1.44 -0.192,4.272 0.768,3.793 1.248,-0.624 3.312,-1.297 4.992,-1.297 1.584,0 2.592,0.721 2.592,1.681 0,0.815 -0.72,1.536 -3.648,3.6 -2.448,1.824 -3.216,3.504 -3.216,5.424 0,3.984 3.408,7.297 8.401,7.297 L 0,0 z\" id=\"path3034\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(133.5361,591.6636)\" id=\"g3036\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.353,0 6.625,4.129 7.825,12.001 0.048,0.48 0.097,0.624 0.193,1.104 -0.529,0.192 -1.248,0.336 -1.969,0.336 -1.776,0 -3.6,-0.528 -5.233,-2.736 -1.679,-2.352 -2.4,-5.28 -2.4,-7.633 C -1.584,1.057 -1.008,0 -0.047,0 L 0,0 z m -7.729,2.16 c 0,2.832 0.961,7.777 4.561,11.377 3.072,3.168 6.816,3.937 10.225,3.937 2.256,0 5.329,-0.72 7.249,-1.105 -0.48,-2.112 -1.632,-10.08 -2.16,-14.688 -0.241,-1.969 -0.336,-4.705 -0.241,-5.713 -1.584,-0.672 -4.559,-0.864 -5.376,-0.864 -0.431,0 -0.528,1.968 -0.384,3.84 0.048,0.624 0.144,1.536 0.192,1.92 -1.872,-3.12 -5.568,-5.76 -9.456,-5.76 -2.785,0 -4.61,2.304 -4.61,7.008 l 0,0.048 z\" id=\"path3038\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(158.688,602.897)\" id=\"g3040\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.209,3.552 5.088,6.24 9.121,6.24 3.408,0 4.512,-3.168 3.889,-7.68 -0.336,-2.113 -0.912,-5.137 -1.297,-7.921 -0.336,-2.353 -0.576,-4.464 -0.527,-5.905 -1.248,-0.624 -4.897,-0.864 -5.713,-0.864 -0.336,0 -0.385,2.641 0.048,5.425 0.383,2.304 1.2,6.48 1.584,8.881 0.241,1.391 0.192,3.072 -1.152,3.072 -1.777,0 -6,-2.833 -8.113,-14.449 -0.145,-0.96 -0.528,-1.536 -1.057,-1.872 -0.719,-0.433 -2.256,-0.817 -5.375,-0.865 0.576,2.928 1.488,8.929 2.16,13.345 0.623,4.032 0.864,6.625 0.719,7.633 0.817,0.288 5.09,1.2 5.568,1.2 C 0.385,6.24 0.48,4.752 0,1.151 -0.047,0.815 -0.096,0.288 -0.145,0 L 0,0 z\" id=\"path3042\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(183.0728,591.7114)\" id=\"g3044\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.111,0 6.385,3.937 7.584,10.897 0.049,0.384 0.193,1.104 0.289,1.537 -0.625,0.576 -1.441,0.96 -2.736,0.96 -4.85,0 -7.01,-5.809 -7.01,-9.986 C -1.873,1.152 -1.104,0 -0.049,0 L 0,0 z m -3.168,-4.944 c -3.072,0 -4.992,2.736 -4.992,7.44 0,7.777 4.847,14.93 13.008,14.93 1.441,0 2.736,-0.384 3.552,-0.864 0.432,2.208 1.44,9.025 1.489,11.041 1.343,0.24 4.224,0.671 5.519,0.671 0.53,0 0.674,-0.527 0.481,-1.727 C 14.736,19.346 12.674,5.521 12.289,2.448 12,-0.144 11.953,-2.688 12,-4.128 10.465,-4.8 7.344,-4.944 6.529,-4.944 6.191,-4.944 6,-2.736 6.096,-0.768 6.145,-0.144 6.24,0.769 6.24,0.912 3.84,-3.024 0.527,-4.944 -3.121,-4.944 l -0.047,0 z\" id=\"path3046\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(208.0317,602.2241)\" id=\"g3048\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 2.545,5.665 5.568,6.913 7.537,6.913 8.162,6.913 9.121,6.529 9.553,6.049 9.746,4.465 8.498,1.297 7.393,0.097 6.816,0.385 6.098,0.673 5.281,0.673 c -1.633,0 -4.849,-2.545 -6.865,-13.489 -0.145,-0.913 -0.432,-1.297 -0.959,-1.537 -0.816,-0.48 -4.033,-0.864 -5.568,-0.912 0.718,3.937 1.966,11.953 2.447,16.658 0.144,1.2 0.191,3.408 0.096,4.272 0.912,0.432 4.513,1.248 5.328,1.248 0.433,0 0.769,-2.641 0.095,-6.913 L 0,0 z\" id=\"path3050\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(224.9751,591.6636)\" id=\"g3052\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.354,0 6.625,4.129 7.826,12.001 0.047,0.48 0.096,0.624 0.192,1.104 -0.528,0.192 -1.248,0.336 -1.969,0.336 -1.776,0 -3.6,-0.528 -5.233,-2.736 -1.679,-2.352 -2.4,-5.28 -2.4,-7.633 C -1.584,1.057 -1.008,0 -0.047,0 L 0,0 z m -7.729,2.16 c 0,2.832 0.961,7.777 4.561,11.377 3.072,3.168 6.816,3.937 10.225,3.937 2.256,0 5.328,-0.72 7.25,-1.105 -0.481,-2.112 -1.633,-10.08 -2.161,-14.688 -0.24,-1.969 -0.337,-4.705 -0.24,-5.713 -1.584,-0.672 -4.56,-0.864 -5.377,-0.864 -0.431,0 -0.527,1.968 -0.384,3.84 0.048,0.624 0.144,1.536 0.193,1.92 -1.873,-3.12 -5.568,-5.76 -9.457,-5.76 -2.785,0 -4.61,2.304 -4.61,7.008 l 0,0.048 z\" id=\"path3054\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\n\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(-62.668647,-74.06425)\" id=\"layer2\" style=\"display:inline\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"matrix(1.25,0,0,-1.25,19.117647,990)\" id=\"g4555\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2828\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2832)\" id=\"g2830\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(210.8784,690.4834)\" id=\"g2836\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 1.584,-18.452 -27.455,-36.014 -64.859,-39.223 -37.404,-3.209 -69.01,9.151 -70.592,27.602 -1.584,18.455 27.455,36.016 64.859,39.225 C -33.188,30.812 -1.582,18.455 0,0\" id=\"path2838\" style=\"fill:#bbe6fb;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2840\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2844)\" id=\"g2842\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2848\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2850\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2856\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2852)\" id=\"g2858\" style=\"opacity:0.35000604\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(141.3843,715.9233)\" id=\"g2860\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -14.268,0.232 -30.964,-5.433 -43.387,-10.738 -1.293,-3.726 -1.989,-7.689 -1.989,-11.797 0,-21.888 19.764,-39.634 44.145,-39.634 24.381,0 44.145,17.746 44.145,39.634 0,6.927 -1.984,13.435 -5.463,19.101 C 27.512,-1.889 13.842,-0.225 0,0\" id=\"path2862\" style=\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2864\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2868)\" id=\"g2866\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(140.1528,715.9277)\" id=\"g2872\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -7.899,0.482 -21.514,-3.639 -32.867,-7.75 -1.725,-4.071 -2.683,-8.526 -2.683,-13.201 0,-19.178 17.388,-34.725 35.782,-34.725 18.273,0 34.44,15.572 35.782,34.725 0.436,6.237 -1.711,12.114 -4.692,17.181 C 19.552,-1.697 7.061,-0.431 0,0\" id=\"path2874\" style=\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2876\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2880)\" id=\"g2878\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(119.8818,697.4946)\" id=\"g2884\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 0.969,2.146 2.437,3.197 3.859,4.996 3.701,5.422 3.355,6.815 3.355,7.298 c 0,2.156 1.749,3.906 3.906,3.906 0.509,0 0.995,-0.101 1.44,-0.278 6.465,4.927 14.976,7.075 23.529,5.163 0.781,-0.176 1.547,-0.389 2.299,-0.623 C 26.076,16.638 16.548,13.644 10.067,8.413 10.265,7.946 10.814,6.611 10.814,6.074 10.814,3.917 9.418,3.392 7.261,3.392 6.771,3.392 6.303,3.486 5.87,3.651 4.406,1.685 2.612,-2.06 1.734,-4.401 c 3.584,-3.206 6.822,-4.368 11.042,-5.945 -0.011,0.201 0.145,0.387 0.145,0.592 0,6.503 5.725,11.788 12.229,11.788 5.828,0 10.654,-4.238 11.596,-9.798 2.908,1.85 5.72,3.268 7.863,6.01 -0.5,0.61 -1.039,2.337 -1.039,3.187 0,1.957 1.588,3.544 3.545,3.544 0.277,0 0.543,-0.04 0.802,-0.1 1.088,2.236 1.909,4.606 2.434,7.05 -10.17,7.529 -29.847,6.502 -29.847,6.502 0,0 -15.658,0.817 -26.258,-4.349 C -5.047,8.969 -3.008,4.11 0,0\" id=\"path2886\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(168.4907,700.4282)\" id=\"g2888\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 0.719,-0.648 1.111,-1.217 1.42,-1.771 0.951,-1.71 -0.957,-3.275 -2.914,-3.275 -0.199,0 -0.391,0.027 -0.582,0.059 -2.205,-3.446 -6.067,-7.865 -9.498,-10.089 5.261,-0.862 10.222,-2.969 14.17,-6.225 2.875,5.151 5.08,12.589 5.08,18.907 0,4.809 -2.123,8.334 -5.328,10.92 C 2.18,5.95 0.805,2.347 0,0\" id=\"path2890\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(125.7842,667.8032)\" id=\"g2892\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 1.753,4.841 6.065,8.592 10.144,11.892 9.547,12.709 8.652,14.732 8.279,15.69 3.304,17.203 -1.098,20.035 -4.512,23.784 -4.537,23.675 -4.568,23.569 -4.594,23.46 -5.237,20.579 -5.355,17.692 -5.035,14.876 -2.653,14.432 -0.85,12.345 -0.85,9.834 -0.85,8.345 -2.155,6.187 -3.168,5.248 -2.067,2.872 -1.316,1.726 0,0\" id=\"path2894\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(125.4756,663.7393)\" id=\"g2896\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -2.091,2.079 -3.537,6.226 -4.894,8.83 -0.254,-0.039 -0.514,-0.066 -0.78,-0.066 -2.836,0 -5.807,2.38 -5.135,5.134 0.372,1.524 1.424,2.521 3.137,3.353 -0.39,3.157 -0.496,7.695 0.237,10.977 0.21,0.939 0.655,1.379 0.95,2.273 -3.129,4.579 -5.151,10.589 -5.151,16.552 0,0.218 0.011,0.433 0.016,0.649 -5.288,-2.652 -9.253,-6.83 -9.253,-13.407 0,-14.548 8.379,-28.819 20.846,-34.413 C -0.018,-0.079 -0.01,-0.039 0,0\" id=\"path2898\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(156.1313,683.8511)\" id=\"g2900\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -1.611,-4.582 -5.967,-7.873 -11.1,-7.873 -2.746,0 -5.265,0.947 -7.267,2.521 -4.127,-3.214 -7.871,-8.86 -9.774,-13.758 0.854,-0.919 1.449,-1.675 2.407,-2.49 2.887,-0.752 6.863,0 9.988,0 12.57,0 23.703,5.592 30.086,15.398 C 10.096,-3.263 5.09,-0.466 0,0\" id=\"path2902\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2904\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2908)\" id=\"g2906\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(119.5596,695.7944)\" id=\"g2912\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 0.969,2.146 2.184,4.132 3.605,5.931 -0.158,0.425 -0.25,0.884 -0.25,1.367 0,2.156 1.749,3.906 3.906,3.906 0.509,0 0.995,-0.101 1.44,-0.278 6.465,4.927 14.976,7.075 23.529,5.163 0.781,-0.176 1.547,-0.389 2.299,-0.623 -8.453,1.172 -17.187,-1.419 -23.668,-6.651 0.198,-0.466 0.306,-0.98 0.306,-1.517 0,-2.157 -1.749,-3.906 -3.906,-3.906 -0.49,0 -0.958,0.094 -1.391,0.259 -1.464,-1.966 -2.661,-4.138 -3.539,-6.48 3.078,-3.317 6.856,-5.94 11.075,-7.517 -0.01,0.201 -0.031,0.4 -0.031,0.605 0,6.503 5.271,11.775 11.775,11.775 5.828,0 10.654,-4.238 11.596,-9.798 2.908,1.85 5.492,4.226 7.634,6.968 -0.5,0.61 -0.81,1.379 -0.81,2.229 0,1.957 1.588,3.544 3.545,3.544 0.277,0 0.543,-0.04 0.802,-0.1 1.088,2.236 1.909,4.606 2.434,7.05 -10.17,7.529 -29.847,6.502 -29.847,6.502 0,0 -15.658,0.817 -26.258,-4.349 C -5.047,8.969 -3.008,4.11 0,0\" id=\"path2914\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(169.0396,699.8481)\" id=\"g2916\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 0.719,-0.648 1.18,-1.577 1.18,-2.621 0,-1.957 -1.588,-3.545 -3.545,-3.545 -0.199,0 -0.391,0.027 -0.582,0.059 -2.205,-3.446 -5.127,-6.384 -8.559,-8.608 5.072,-0.793 9.846,-2.945 13.793,-6.201 2.875,5.151 4.518,11.084 4.518,17.402 0,4.809 -2.123,8.334 -5.328,10.92 C 1.309,4.83 0.805,2.347 0,0\" id=\"path2918\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(126.3252,666.6401)\" id=\"g2920\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 1.753,4.841 4.799,9.185 8.878,12.484 8.281,13.302 7.789,14.195 7.416,15.153 2.44,16.666 -1.961,19.498 -5.375,23.247 -5.4,23.138 -5.432,23.032 -5.457,22.923 -6.101,20.042 -6.219,17.155 -5.898,14.339 -3.517,13.895 -1.713,11.808 -1.713,9.297 -1.713,7.808 -2.352,6.469 -3.365,5.53 -2.446,3.582 -1.316,1.726 0,0\" id=\"path2922\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(125.4619,663.7983)\" id=\"g2924\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -2.091,2.079 -3.846,4.467 -5.202,7.07 -0.255,-0.039 -0.515,-0.065 -0.78,-0.065 -2.836,0 -5.135,2.299 -5.135,5.134 0,2.032 1.184,3.784 2.897,4.616 -0.389,3.156 -0.257,6.432 0.477,9.714 0.21,0.938 0.466,1.854 0.761,2.749 -3.129,4.578 -4.962,10.113 -4.962,16.076 0,0.218 0.01,0.433 0.015,0.648 -5.288,-2.651 -9.253,-6.83 -9.253,-13.406 0,-14.549 8.688,-27.06 21.155,-32.654 C -0.018,-0.079 -0.01,-0.039 0,0\" id=\"path2926\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(155.8091,682.1509)\" id=\"g2928\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -1.611,-4.582 -5.967,-7.873 -11.1,-7.873 -2.746,0 -5.265,0.947 -7.267,2.521 -4.127,-3.214 -7.242,-7.595 -9.144,-12.494 0.853,-0.919 1.765,-1.785 2.723,-2.599 2.888,-0.752 5.917,-1.155 9.042,-1.155 12.57,0 23.621,6.49 30.004,16.295 C 10.014,-2.365 5.09,-0.466 0,0\" id=\"path2930\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2932\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2936)\" id=\"g2934\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2940\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2942\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2948\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2944)\" id=\"g2950\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(156.2222,685.187)\" id=\"g2952\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 10.879,2.595 -0.041,3.152 8.846,9.944 -1.238,6.329 5.615,15.826 -3.85,9.535 l 3.309,11.117 -6.5,-9.163 -0.148,11.579 -4.277,-10.314 -3.566,10.437 0.193,-12.295 -6.163,11.021 3.335,-11.702 -9.997,7.27 7.831,-9.84 -12.411,4.564 9.795,-7.247 -12.56,-0.386 12.842,-3.314 -12.853,-2.779 12.687,-0.92 -10.699,-6.851 11.017,3.994 -7.644,-9.681 9.659,7.79 -3.478,-12.991 7.457,10.572 -1.045,-12.486 4.233,11.319 3.603,-11.897 0.876,11.933 5.348,-10.181 -3.16,11.645 9.793,-7.586 -6.322,9.672 10.744,-4.186 -8.215,8.073 L 10.85,-4.164 0,0 z\" id=\"path2954\" style=\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2956\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2960)\" id=\"g2958\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2964\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2966\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2972\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2968)\" id=\"g2974\" style=\"opacity:0.35000604\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(40.4033,664.3701)\" id=\"g2976\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 33.74,33.739 60.687,44.155 85.143,48.91 3.236,0.629 3.848,7.7 3.848,7.7 0,0 0.453,-5.208 2.718,-5.887 2.264,-0.68 5.207,8.152 5.207,8.152 0,0 -2.717,-7.926 0,-8.379 2.718,-0.453 7.699,7.699 7.699,7.699 0,0 -2.037,-7.019 -0.678,-7.472 1.357,-0.453 8.15,10.189 8.15,10.189 0,0 -4.076,-7.019 -0.226,-7.699 3.851,-0.679 9.467,4.791 9.467,4.791 0,0 -4.416,-5.005 -2.448,-5.696 8.379,-2.945 15.159,7.945 15.159,7.945 0,0 -1.571,-4.775 -5.647,-9.983 8.83,-2.264 15.389,11.039 15.389,11.039 l -6.559,-13.303 c 3.397,-1.813 16.985,13.812 16.985,13.812 0,0 -7.02,-12.228 -11.096,-14.718 2.264,-1.812 10.416,5.434 10.416,5.434 0,0 -6.567,-8.151 -4.076,-8.604 3.623,-2.944 16.982,15.171 16.982,15.171 0,0 -5.207,-10.642 -12.906,-19.021 6.435,-3.219 22.418,17.436 22.418,17.436 0,0 -0.453,-6.567 -12.002,-16.983 8.605,1.132 19.701,17.436 19.701,17.436 0,0 -4.076,-12.228 -13.814,-20.832 8.449,0.879 21.964,21.738 21.964,21.738 0,0 -5.207,-14.492 -15.849,-22.871 11.775,-2.604 28.758,14.945 28.758,14.945 0,0 -6.68,-12.455 -15.399,-17.549 9.738,-3.736 23.098,11.662 23.098,11.662 0,0 -13.36,-20.607 -34.645,-19.701 -6.984,0.297 -28.109,21.188 -73.368,19.474 C 44.609,42.57 31.929,17.209 0,0\" id=\"path2978\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(41.7861,666.9326)\" id=\"g2980\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 33.74,33.739 60.686,44.154 85.142,48.91 3.237,0.629 3.849,7.699 3.849,7.699 0,0 0.452,-5.209 2.718,-5.887 2.264,-0.679 5.207,8.151 5.207,8.151 0,0 -2.717,-7.926 0,-8.378 2.718,-0.452 7.699,7.699 7.699,7.699 0,0 -2.037,-7.019 -0.68,-7.472 1.359,-0.453 8.152,10.19 8.152,10.19 0,0 -4.076,-7.02 -0.226,-7.699 3.849,-0.68 9.467,4.79 9.467,4.79 0,0 -4.416,-5.005 -2.448,-5.696 8.379,-2.944 15.157,7.945 15.157,7.945 0,0 -1.571,-4.775 -5.645,-9.983 8.83,-2.265 15.389,11.04 15.389,11.04 l -6.559,-13.305 c 3.397,-1.811 16.983,13.812 16.983,13.812 0,0 -7.018,-12.226 -11.094,-14.717 2.264,-1.812 10.416,5.434 10.416,5.434 0,0 -6.567,-8.152 -4.076,-8.604 3.623,-2.945 16.982,15.171 16.982,15.171 0,0 -5.209,-10.643 -12.906,-19.021 6.435,-3.22 22.418,17.436 22.418,17.436 0,0 -0.453,-6.568 -12.002,-16.984 8.605,1.133 19.701,17.437 19.701,17.437 0,0 -4.076,-12.228 -13.814,-20.833 8.449,0.879 21.964,21.738 21.964,21.738 0,0 -5.207,-14.492 -15.849,-22.87 11.775,-2.604 28.758,14.944 28.758,14.944 0,0 -6.68,-12.453 -15.399,-17.548 9.738,-3.736 23.098,11.662 23.098,11.662 0,0 -13.36,-20.607 -34.647,-19.701 -6.982,0.298 -28.107,21.189 -73.367,19.474 C 44.609,42.57 31.928,17.209 0,0\" id=\"path2982\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2984\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2988)\" id=\"g2986\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2992\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2994\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g3000\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2996)\" id=\"g3002\" style=\"opacity:0.35000604\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(39.5195,660.6802)\" id=\"g3004\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 17.832,-8.945 34.137,1.358 54.686,-4.433 15.623,-4.404 34.645,-9.833 60.458,-6.096 25.814,3.735 47.893,14.944 58.424,34.985 3.283,8.943 16.642,-2.039 16.642,-2.039 0,0 -9.736,4.076 -9.509,2.151 0.226,-1.924 14.605,-8.604 14.605,-8.604 0,0 -13.021,4.076 -12.228,1.019 0.793,-3.057 16.302,-15.285 16.302,-15.285 0,0 -17.548,13.36 -19.019,11.549 -1.473,-1.812 7.472,-9.172 7.472,-9.172 0,0 -14.832,9.172 -20.041,6.467 -3.746,-1.943 15.399,-14.506 15.399,-14.506 0,0 -12.455,9.512 -15.399,7.021 -2.943,-2.492 14.04,-22.871 14.04,-22.871 0,0 -19.249,20.833 -21.172,19.814 -1.926,-1.019 5.32,-10.983 5.32,-10.983 0,0 -9.51,10.417 -12.113,8.605 -2.604,-1.812 13.586,-28.871 13.586,-28.871 0,0 -17.549,27.738 -24.795,23.098 11.379,-24.966 7.133,-28.533 7.133,-28.533 0,0 -1.452,25.47 -15.625,24.796 -7.133,-0.34 3.396,-19.021 3.396,-19.021 0,0 -9.691,17.062 -16.145,16.722 11.895,-22.511 7.655,-31.667 7.655,-31.667 0,0 1.967,19.226 -14.166,29.925 6.113,-5.433 -3.836,-29.925 -3.836,-29.925 0,0 8.752,36.091 -6.455,29.21 -2.403,-1.085 -0.17,-18.002 -0.17,-18.002 0,0 -3.057,19.362 -7.641,18.342 -2.673,-0.593 -16.984,-26.833 -16.984,-26.833 0,0 11.719,28.362 8.153,27.173 -2.598,-0.867 -7.473,-12.568 -7.473,-12.568 0,0 2.377,11.549 0,12.228 -2.377,0.68 -15.625,-12.228 -15.625,-12.228 0,0 9.851,11.549 8.152,13.927 -2.574,3.603 -5.591,3.772 -9.171,2.377 -5.209,-2.03 -12.227,-11.548 -12.227,-11.548 0,0 6.996,9.637 5.773,13.247 -1.963,5.8 -22.077,-11.209 -22.077,-11.209 0,0 11.888,11.209 9.171,13.587 -2.717,2.377 -17.471,1.642 -22.078,1.655 C 8.832,-6.454 4.124,-3.267 0,0\" id=\"path3006\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(38.8408,662.7183)\" id=\"g3008\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 17.832,-8.945 34.136,1.358 54.685,-4.434 15.623,-4.402 34.646,-9.832 60.46,-6.095 25.814,3.736 47.891,14.945 58.422,34.984 3.283,8.944 16.642,-2.037 16.642,-2.037 0,0 -9.736,4.075 -9.509,2.15 0.226,-1.924 14.605,-8.604 14.605,-8.604 0,0 -13.021,4.075 -12.228,1.018 0.793,-3.056 16.304,-15.284 16.304,-15.284 0,0 -17.55,13.361 -19.021,11.548 -1.471,-1.811 7.473,-9.17 7.473,-9.17 0,0 -14.833,9.17 -20.041,6.467 -3.747,-1.944 15.398,-14.506 15.398,-14.506 0,0 -12.455,9.511 -15.398,7.02 -2.944,-2.492 14.041,-22.871 14.041,-22.871 0,0 -19.25,20.833 -21.174,19.814 -1.924,-1.02 5.322,-10.982 5.322,-10.982 0,0 -9.512,10.416 -12.115,8.604 -2.604,-1.811 13.586,-28.871 13.586,-28.871 0,0 -17.549,27.739 -24.795,23.097 11.379,-24.965 7.133,-28.532 7.133,-28.532 0,0 -1.452,25.47 -15.625,24.795 -7.133,-0.34 3.396,-19.02 3.396,-19.02 0,0 -9.691,17.063 -16.144,16.723 11.896,-22.512 7.654,-31.668 7.654,-31.668 0,0 1.967,19.227 -14.166,29.926 6.113,-5.434 -3.836,-29.926 -3.836,-29.926 0,0 8.754,36.091 -6.453,29.21 -2.403,-1.086 -0.17,-18.002 -0.17,-18.002 0,0 -3.059,19.361 -7.642,18.342 -2.674,-0.593 -16.985,-26.833 -16.985,-26.833 0,0 11.719,28.362 8.153,27.172 -2.598,-0.865 -7.473,-12.566 -7.473,-12.566 0,0 2.378,11.548 0,12.227 -2.377,0.679 -15.624,-12.227 -15.624,-12.227 0,0 9.851,11.548 8.151,13.926 -2.574,3.603 -5.591,3.771 -9.17,2.376 -5.21,-2.029 -12.228,-11.547 -12.228,-11.547 0,0 6.996,9.638 5.774,13.247 -1.964,5.799 -22.077,-11.209 -22.077,-11.209 0,0 11.888,11.209 9.17,13.586 C 41.778,-5.774 27.024,-6.51 22.417,-6.496 8.831,-6.453 4.124,-3.267 0,0\" id=\"path3010\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" xmlns:_xmlns=\"xmlns\" _xmlns:dc=\"http://purl.org/dc/elements/1.1/\" _xmlns:cc=\"http://creativecommons.org/ns#\" _xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" _xmlns:svg=\"http://www.w3.org/2000/svg\" version=\"1.1\" width=\"20\" height=\"20\" id=\"svg2816\" xml:space=\"preserve\"\u003e\u003ctitle xmlns=\"http://www.w3.org/2000/svg\" id=\"title3537\"\u003eApache Cassandra\u003c/title\u003e\u003cmetadata xmlns=\"http://www.w3.org/2000/svg\" id=\"metadata2822\"\u003e\u003cRDF xmlns=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\u003e\u003cWork xmlns=\"http://creativecommons.org/ns#\" xmlns:_=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" _:about=\"\"\u003e\u003cformat xmlns=\"http://purl.org/dc/elements/1.1/\"\u003eimage/svg+xml\u003c/format\u003e\u003ctype xmlns=\"http://purl.org/dc/elements/1.1/\" _:resource=\"http://purl.org/dc/dcmitype/StillImage\"\u003e\u003c/type\u003e\u003ctitle xmlns=\"http://purl.org/dc/elements/1.1/\"\u003eApache Cassandra\u003c/title\u003e\u003clicense xmlns=\"http://creativecommons.org/ns#\" _:resource=\"Apache License\"\u003e\u003c/license\u003e\u003ccreator xmlns=\"http://purl.org/dc/elements/1.1/\"\u003e\u003cAgent xmlns=\"http://creativecommons.org/ns#\"\u003e\u003ctitle xmlns=\"http://purl.org/dc/elements/1.1/\"\u003eApache Software Foundation\u003c/title\u003e\u003c/Agent\u003e\u003c/creator\u003e\u003csource xmlns=\"http://purl.org/dc/elements/1.1/\"\u003ehttps://svn.apache.org/repos/asf/cassandra/logo/cassandra.svg\u003c/source\u003e\u003c/Work\u003e\u003c/RDF\u003e\u003c/metadata\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\" id=\"defs2820\"\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2832\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2834\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2844\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2846\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2852\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 96.0078,715.93 88.2902,0 0,-62.176 -88.2902,0 0,62.176 z\" id=\"path2854\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2868\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2870\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2880\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2882\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2908\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2910\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2936\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2938\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2944\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 121.202,708.378 45.899,0 0,-45.859 -45.899,0 0,45.859 z\" id=\"path2946\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2960\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2962\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2968\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 40.4033,726.188 212.4017,0 0,-61.818 -212.4017,0 0,61.818 z\" id=\"path2970\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2988\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2990\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2996\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 39.5195,688.644 199.3805,0 0,-73.818 -199.3805,0 0,73.818 z\" id=\"path2998\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath3016\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path3018\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(-62.668647,-74.06425)\" id=\"layer1\" style=\"display:inline\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"matrix(1.25,0,0,-1.25,19.117647,990)\" id=\"g3012\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath3016)\" id=\"g3014\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(61.4912,609.1372)\" id=\"g3020\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 1.824,0 3.552,-0.432 4.417,-1.296 4.561,-2.641 3.36,-4.801 2.592,-4.801 1.68,-4.465 0.816,-4.272 -0.24,-4.272 c -4.368,0 -6.529,-4.513 -6.529,-8.977 0,-2.784 0.96,-4.465 3.169,-4.465 2.352,0 4.752,1.584 6.096,2.784 0.336,-0.239 0.768,-1.008 0.768,-1.872 0,-0.96 -0.288,-1.872 -1.152,-2.736 -1.536,-1.536 -4.128,-2.832 -7.873,-2.832 -4.32,0 -7.296,2.448 -7.296,8.161 C -13.057,-6.721 -8.113,0 -0.048,0 L 0,0 z\" id=\"path3022\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(75.6021,591.6636)\" id=\"g3024\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.352,0 6.625,4.129 7.825,12.001 0.048,0.48 0.096,0.624 0.192,1.104 -0.528,0.192 -1.248,0.336 -1.969,0.336 -1.776,0 -3.6,-0.528 -5.232,-2.736 -1.68,-2.352 -2.4,-5.28 -2.4,-7.633 C -1.584,1.057 -1.008,0 -0.048,0 L 0,0 z m -7.729,2.16 c 0,2.832 0.96,7.777 4.561,11.377 3.072,3.168 6.816,3.937 10.225,3.937 2.256,0 5.328,-0.72 7.248,-1.105 -0.48,-2.112 -1.632,-10.08 -2.16,-14.688 -0.24,-1.969 -0.336,-4.705 -0.24,-5.713 -1.584,-0.672 -4.56,-0.864 -5.377,-0.864 -0.431,0 -0.528,1.968 -0.383,3.84 0.047,0.624 0.144,1.536 0.191,1.92 -1.872,-3.12 -5.568,-5.76 -9.456,-5.76 -2.784,0 -4.609,2.304 -4.609,7.008 l 0,0.048 z\" id=\"path3026\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(101.8579,609.1372)\" id=\"g3028\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 1.968,0 3.84,-0.72 4.705,-1.632 -0.048,-1.345 -1.104,-3.6 -2.785,-2.976 -0.72,0.24 -1.44,0.431 -2.4,0.431 -1.296,0 -2.4,-0.576 -2.4,-1.775 0,-0.912 0.672,-1.585 3.888,-3.841 2.305,-1.68 3.217,-3.168 3.217,-5.28 0,-3.505 -3.313,-7.297 -9.073,-7.297 -2.352,0 -4.417,0.912 -5.089,1.872 -0.864,1.44 -0.192,4.272 0.769,3.793 1.248,-0.624 3.312,-1.297 4.992,-1.297 1.584,0 2.592,0.721 2.592,1.681 0,0.815 -0.72,1.536 -3.648,3.6 -2.449,1.824 -3.217,3.504 -3.217,5.424 0,3.984 3.409,7.297 8.401,7.297 L 0,0 z\" id=\"path3030\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(118.417,609.1372)\" id=\"g3032\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 1.969,0 3.841,-0.72 4.705,-1.632 -0.048,-1.345 -1.103,-3.6 -2.784,-2.976 -0.72,0.24 -1.441,0.431 -2.4,0.431 -1.296,0 -2.4,-0.576 -2.4,-1.775 0,-0.912 0.672,-1.585 3.888,-3.841 2.304,-1.68 3.216,-3.168 3.216,-5.28 0,-3.505 -3.313,-7.297 -9.073,-7.297 -2.352,0 -4.416,0.912 -5.088,1.872 -0.864,1.44 -0.192,4.272 0.768,3.793 1.248,-0.624 3.312,-1.297 4.992,-1.297 1.584,0 2.592,0.721 2.592,1.681 0,0.815 -0.72,1.536 -3.648,3.6 -2.448,1.824 -3.216,3.504 -3.216,5.424 0,3.984 3.408,7.297 8.401,7.297 L 0,0 z\" id=\"path3034\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(133.5361,591.6636)\" id=\"g3036\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.353,0 6.625,4.129 7.825,12.001 0.048,0.48 0.097,0.624 0.193,1.104 -0.529,0.192 -1.248,0.336 -1.969,0.336 -1.776,0 -3.6,-0.528 -5.233,-2.736 -1.679,-2.352 -2.4,-5.28 -2.4,-7.633 C -1.584,1.057 -1.008,0 -0.047,0 L 0,0 z m -7.729,2.16 c 0,2.832 0.961,7.777 4.561,11.377 3.072,3.168 6.816,3.937 10.225,3.937 2.256,0 5.329,-0.72 7.249,-1.105 -0.48,-2.112 -1.632,-10.08 -2.16,-14.688 -0.241,-1.969 -0.336,-4.705 -0.241,-5.713 -1.584,-0.672 -4.559,-0.864 -5.376,-0.864 -0.431,0 -0.528,1.968 -0.384,3.84 0.048,0.624 0.144,1.536 0.192,1.92 -1.872,-3.12 -5.568,-5.76 -9.456,-5.76 -2.785,0 -4.61,2.304 -4.61,7.008 l 0,0.048 z\" id=\"path3038\" style=\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(158.688,602.897)\" id=\"g3040\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.209,3.552 5.088,6.24 9.121,6.24 3.408,0 4.512,-3.168 3.889,-7.68 -0.336,-2.113 -0.912,-5.137 -1.297,-7.921 -0.336,-2.353 -0.576,-4.464 -0.527,-5.905 -1.248,-0.624 -4.897,-0.864 -5.713,-0.864 -0.336,0 -0.385,2.641 0.048,5.425 0.383,2.304 1.2,6.48 1.584,8.881 0.241,1.391 0.192,3.072 -1.152,3.072 -1.777,0 -6,-2.833 -8.113,-14.449 -0.145,-0.96 -0.528,-1.536 -1.057,-1.872 -0.719,-0.433 -2.256,-0.817 -5.375,-0.865 0.576,2.928 1.488,8.929 2.16,13.345 0.623,4.032 0.864,6.625 0.719,7.633 0.817,0.288 5.09,1.2 5.568,1.2 C 0.385,6.24 0.48,4.752 0,1.151 -0.047,0.815 -0.096,0.288 -0.145,0 L 0,0 z\" id=\"path3042\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(183.0728,591.7114)\" id=\"g3044\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.111,0 6.385,3.937 7.584,10.897 0.049,0.384 0.193,1.104 0.289,1.537 -0.625,0.576 -1.441,0.96 -2.736,0.96 -4.85,0 -7.01,-5.809 -7.01,-9.986 C -1.873,1.152 -1.104,0 -0.049,0 L 0,0 z m -3.168,-4.944 c -3.072,0 -4.992,2.736 -4.992,7.44 0,7.777 4.847,14.93 13.008,14.93 1.441,0 2.736,-0.384 3.552,-0.864 0.432,2.208 1.44,9.025 1.489,11.041 1.343,0.24 4.224,0.671 5.519,0.671 0.53,0 0.674,-0.527 0.481,-1.727 C 14.736,19.346 12.674,5.521 12.289,2.448 12,-0.144 11.953,-2.688 12,-4.128 10.465,-4.8 7.344,-4.944 6.529,-4.944 6.191,-4.944 6,-2.736 6.096,-0.768 6.145,-0.144 6.24,0.769 6.24,0.912 3.84,-3.024 0.527,-4.944 -3.121,-4.944 l -0.047,0 z\" id=\"path3046\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(208.0317,602.2241)\" id=\"g3048\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 2.545,5.665 5.568,6.913 7.537,6.913 8.162,6.913 9.121,6.529 9.553,6.049 9.746,4.465 8.498,1.297 7.393,0.097 6.816,0.385 6.098,0.673 5.281,0.673 c -1.633,0 -4.849,-2.545 -6.865,-13.489 -0.145,-0.913 -0.432,-1.297 -0.959,-1.537 -0.816,-0.48 -4.033,-0.864 -5.568,-0.912 0.718,3.937 1.966,11.953 2.447,16.658 0.144,1.2 0.191,3.408 0.096,4.272 0.912,0.432 4.513,1.248 5.328,1.248 0.433,0 0.769,-2.641 0.095,-6.913 L 0,0 z\" id=\"path3050\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(224.9751,591.6636)\" id=\"g3052\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.354,0 6.625,4.129 7.826,12.001 0.047,0.48 0.096,0.624 0.192,1.104 -0.528,0.192 -1.248,0.336 -1.969,0.336 -1.776,0 -3.6,-0.528 -5.233,-2.736 -1.679,-2.352 -2.4,-5.28 -2.4,-7.633 C -1.584,1.057 -1.008,0 -0.047,0 L 0,0 z m -7.729,2.16 c 0,2.832 0.961,7.777 4.561,11.377 3.072,3.168 6.816,3.937 10.225,3.937 2.256,0 5.328,-0.72 7.25,-1.105 -0.481,-2.112 -1.633,-10.08 -2.161,-14.688 -0.24,-1.969 -0.337,-4.705 -0.24,-5.713 -1.584,-0.672 -4.56,-0.864 -5.377,-0.864 -0.431,0 -0.527,1.968 -0.384,3.84 0.048,0.624 0.144,1.536 0.193,1.92 -1.873,-3.12 -5.568,-5.76 -9.457,-5.76 -2.785,0 -4.61,2.304 -4.61,7.008 l 0,0.048 z\" id=\"path3054\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\n\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(-62.668647,-74.06425)\" id=\"layer2\" style=\"display:inline\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"matrix(1.25,0,0,-1.25,19.117647,990)\" id=\"g4555\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2828\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2832)\" id=\"g2830\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(210.8784,690.4834)\" id=\"g2836\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 1.584,-18.452 -27.455,-36.014 -64.859,-39.223 -37.404,-3.209 -69.01,9.151 -70.592,27.602 -1.584,18.455 27.455,36.016 64.859,39.225 C -33.188,30.812 -1.582,18.455 0,0\" id=\"path2838\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2840\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2844)\" id=\"g2842\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2848\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2850\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2856\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2852)\" id=\"g2858\" style=\"opacity:0.35000604\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(141.3843,715.9233)\" id=\"g2860\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -14.268,0.232 -30.964,-5.433 -43.387,-10.738 -1.293,-3.726 -1.989,-7.689 -1.989,-11.797 0,-21.888 19.764,-39.634 44.145,-39.634 24.381,0 44.145,17.746 44.145,39.634 0,6.927 -1.984,13.435 -5.463,19.101 C 27.512,-1.889 13.842,-0.225 0,0\" id=\"path2862\" style=\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2864\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2868)\" id=\"g2866\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(140.1528,715.9277)\" id=\"g2872\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -7.899,0.482 -21.514,-3.639 -32.867,-7.75 -1.725,-4.071 -2.683,-8.526 -2.683,-13.201 0,-19.178 17.388,-34.725 35.782,-34.725 18.273,0 34.44,15.572 35.782,34.725 0.436,6.237 -1.711,12.114 -4.692,17.181 C 19.552,-1.697 7.061,-0.431 0,0\" id=\"path2874\" style=\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2876\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2880)\" id=\"g2878\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(119.8818,697.4946)\" id=\"g2884\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 0.969,2.146 2.437,3.197 3.859,4.996 3.701,5.422 3.355,6.815 3.355,7.298 c 0,2.156 1.749,3.906 3.906,3.906 0.509,0 0.995,-0.101 1.44,-0.278 6.465,4.927 14.976,7.075 23.529,5.163 0.781,-0.176 1.547,-0.389 2.299,-0.623 C 26.076,16.638 16.548,13.644 10.067,8.413 10.265,7.946 10.814,6.611 10.814,6.074 10.814,3.917 9.418,3.392 7.261,3.392 6.771,3.392 6.303,3.486 5.87,3.651 4.406,1.685 2.612,-2.06 1.734,-4.401 c 3.584,-3.206 6.822,-4.368 11.042,-5.945 -0.011,0.201 0.145,0.387 0.145,0.592 0,6.503 5.725,11.788 12.229,11.788 5.828,0 10.654,-4.238 11.596,-9.798 2.908,1.85 5.72,3.268 7.863,6.01 -0.5,0.61 -1.039,2.337 -1.039,3.187 0,1.957 1.588,3.544 3.545,3.544 0.277,0 0.543,-0.04 0.802,-0.1 1.088,2.236 1.909,4.606 2.434,7.05 -10.17,7.529 -29.847,6.502 -29.847,6.502 0,0 -15.658,0.817 -26.258,-4.349 C -5.047,8.969 -3.008,4.11 0,0\" id=\"path2886\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(168.4907,700.4282)\" id=\"g2888\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 0.719,-0.648 1.111,-1.217 1.42,-1.771 0.951,-1.71 -0.957,-3.275 -2.914,-3.275 -0.199,0 -0.391,0.027 -0.582,0.059 -2.205,-3.446 -6.067,-7.865 -9.498,-10.089 5.261,-0.862 10.222,-2.969 14.17,-6.225 2.875,5.151 5.08,12.589 5.08,18.907 0,4.809 -2.123,8.334 -5.328,10.92 C 2.18,5.95 0.805,2.347 0,0\" id=\"path2890\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(125.7842,667.8032)\" id=\"g2892\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 1.753,4.841 6.065,8.592 10.144,11.892 9.547,12.709 8.652,14.732 8.279,15.69 3.304,17.203 -1.098,20.035 -4.512,23.784 -4.537,23.675 -4.568,23.569 -4.594,23.46 -5.237,20.579 -5.355,17.692 -5.035,14.876 -2.653,14.432 -0.85,12.345 -0.85,9.834 -0.85,8.345 -2.155,6.187 -3.168,5.248 -2.067,2.872 -1.316,1.726 0,0\" id=\"path2894\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(125.4756,663.7393)\" id=\"g2896\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -2.091,2.079 -3.537,6.226 -4.894,8.83 -0.254,-0.039 -0.514,-0.066 -0.78,-0.066 -2.836,0 -5.807,2.38 -5.135,5.134 0.372,1.524 1.424,2.521 3.137,3.353 -0.39,3.157 -0.496,7.695 0.237,10.977 0.21,0.939 0.655,1.379 0.95,2.273 -3.129,4.579 -5.151,10.589 -5.151,16.552 0,0.218 0.011,0.433 0.016,0.649 -5.288,-2.652 -9.253,-6.83 -9.253,-13.407 0,-14.548 8.379,-28.819 20.846,-34.413 C -0.018,-0.079 -0.01,-0.039 0,0\" id=\"path2898\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(156.1313,683.8511)\" id=\"g2900\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -1.611,-4.582 -5.967,-7.873 -11.1,-7.873 -2.746,0 -5.265,0.947 -7.267,2.521 -4.127,-3.214 -7.871,-8.86 -9.774,-13.758 0.854,-0.919 1.449,-1.675 2.407,-2.49 2.887,-0.752 6.863,0 9.988,0 12.57,0 23.703,5.592 30.086,15.398 C 10.096,-3.263 5.09,-0.466 0,0\" id=\"path2902\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2904\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2908)\" id=\"g2906\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(119.5596,695.7944)\" id=\"g2912\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 0.969,2.146 2.184,4.132 3.605,5.931 -0.158,0.425 -0.25,0.884 -0.25,1.367 0,2.156 1.749,3.906 3.906,3.906 0.509,0 0.995,-0.101 1.44,-0.278 6.465,4.927 14.976,7.075 23.529,5.163 0.781,-0.176 1.547,-0.389 2.299,-0.623 -8.453,1.172 -17.187,-1.419 -23.668,-6.651 0.198,-0.466 0.306,-0.98 0.306,-1.517 0,-2.157 -1.749,-3.906 -3.906,-3.906 -0.49,0 -0.958,0.094 -1.391,0.259 -1.464,-1.966 -2.661,-4.138 -3.539,-6.48 3.078,-3.317 6.856,-5.94 11.075,-7.517 -0.01,0.201 -0.031,0.4 -0.031,0.605 0,6.503 5.271,11.775 11.775,11.775 5.828,0 10.654,-4.238 11.596,-9.798 2.908,1.85 5.492,4.226 7.634,6.968 -0.5,0.61 -0.81,1.379 -0.81,2.229 0,1.957 1.588,3.544 3.545,3.544 0.277,0 0.543,-0.04 0.802,-0.1 1.088,2.236 1.909,4.606 2.434,7.05 -10.17,7.529 -29.847,6.502 -29.847,6.502 0,0 -15.658,0.817 -26.258,-4.349 C -5.047,8.969 -3.008,4.11 0,0\" id=\"path2914\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(169.0396,699.8481)\" id=\"g2916\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 0.719,-0.648 1.18,-1.577 1.18,-2.621 0,-1.957 -1.588,-3.545 -3.545,-3.545 -0.199,0 -0.391,0.027 -0.582,0.059 -2.205,-3.446 -5.127,-6.384 -8.559,-8.608 5.072,-0.793 9.846,-2.945 13.793,-6.201 2.875,5.151 4.518,11.084 4.518,17.402 0,4.809 -2.123,8.334 -5.328,10.92 C 1.309,4.83 0.805,2.347 0,0\" id=\"path2918\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(126.3252,666.6401)\" id=\"g2920\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 1.753,4.841 4.799,9.185 8.878,12.484 8.281,13.302 7.789,14.195 7.416,15.153 2.44,16.666 -1.961,19.498 -5.375,23.247 -5.4,23.138 -5.432,23.032 -5.457,22.923 -6.101,20.042 -6.219,17.155 -5.898,14.339 -3.517,13.895 -1.713,11.808 -1.713,9.297 -1.713,7.808 -2.352,6.469 -3.365,5.53 -2.446,3.582 -1.316,1.726 0,0\" id=\"path2922\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(125.4619,663.7983)\" id=\"g2924\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -2.091,2.079 -3.846,4.467 -5.202,7.07 -0.255,-0.039 -0.515,-0.065 -0.78,-0.065 -2.836,0 -5.135,2.299 -5.135,5.134 0,2.032 1.184,3.784 2.897,4.616 -0.389,3.156 -0.257,6.432 0.477,9.714 0.21,0.938 0.466,1.854 0.761,2.749 -3.129,4.578 -4.962,10.113 -4.962,16.076 0,0.218 0.01,0.433 0.015,0.648 -5.288,-2.651 -9.253,-6.83 -9.253,-13.406 0,-14.549 8.688,-27.06 21.155,-32.654 C -0.018,-0.079 -0.01,-0.039 0,0\" id=\"path2926\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(155.8091,682.1509)\" id=\"g2928\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -1.611,-4.582 -5.967,-7.873 -11.1,-7.873 -2.746,0 -5.265,0.947 -7.267,2.521 -4.127,-3.214 -7.242,-7.595 -9.144,-12.494 0.853,-0.919 1.765,-1.785 2.723,-2.599 2.888,-0.752 5.917,-1.155 9.042,-1.155 12.57,0 23.621,6.49 30.004,16.295 C 10.014,-2.365 5.09,-0.466 0,0\" id=\"path2930\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2932\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2936)\" id=\"g2934\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2940\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2942\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2948\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2944)\" id=\"g2950\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(156.2222,685.187)\" id=\"g2952\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 10.879,2.595 -0.041,3.152 8.846,9.944 -1.238,6.329 5.615,15.826 -3.85,9.535 l 3.309,11.117 -6.5,-9.163 -0.148,11.579 -4.277,-10.314 -3.566,10.437 0.193,-12.295 -6.163,11.021 3.335,-11.702 -9.997,7.27 7.831,-9.84 -12.411,4.564 9.795,-7.247 -12.56,-0.386 12.842,-3.314 -12.853,-2.779 12.687,-0.92 -10.699,-6.851 11.017,3.994 -7.644,-9.681 9.659,7.79 -3.478,-12.991 7.457,10.572 -1.045,-12.486 4.233,11.319 3.603,-11.897 0.876,11.933 5.348,-10.181 -3.16,11.645 9.793,-7.586 -6.322,9.672 10.744,-4.186 -8.215,8.073 L 10.85,-4.164 0,0 z\" id=\"path2954\" style=\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2956\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2960)\" id=\"g2958\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2964\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2966\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2972\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2968)\" id=\"g2974\" style=\"opacity:0.35000604\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(40.4033,664.3701)\" id=\"g2976\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 33.74,33.739 60.687,44.155 85.143,48.91 3.236,0.629 3.848,7.7 3.848,7.7 0,0 0.453,-5.208 2.718,-5.887 2.264,-0.68 5.207,8.152 5.207,8.152 0,0 -2.717,-7.926 0,-8.379 2.718,-0.453 7.699,7.699 7.699,7.699 0,0 -2.037,-7.019 -0.678,-7.472 1.357,-0.453 8.15,10.189 8.15,10.189 0,0 -4.076,-7.019 -0.226,-7.699 3.851,-0.679 9.467,4.791 9.467,4.791 0,0 -4.416,-5.005 -2.448,-5.696 8.379,-2.945 15.159,7.945 15.159,7.945 0,0 -1.571,-4.775 -5.647,-9.983 8.83,-2.264 15.389,11.039 15.389,11.039 l -6.559,-13.303 c 3.397,-1.813 16.985,13.812 16.985,13.812 0,0 -7.02,-12.228 -11.096,-14.718 2.264,-1.812 10.416,5.434 10.416,5.434 0,0 -6.567,-8.151 -4.076,-8.604 3.623,-2.944 16.982,15.171 16.982,15.171 0,0 -5.207,-10.642 -12.906,-19.021 6.435,-3.219 22.418,17.436 22.418,17.436 0,0 -0.453,-6.567 -12.002,-16.983 8.605,1.132 19.701,17.436 19.701,17.436 0,0 -4.076,-12.228 -13.814,-20.832 8.449,0.879 21.964,21.738 21.964,21.738 0,0 -5.207,-14.492 -15.849,-22.871 11.775,-2.604 28.758,14.945 28.758,14.945 0,0 -6.68,-12.455 -15.399,-17.549 9.738,-3.736 23.098,11.662 23.098,11.662 0,0 -13.36,-20.607 -34.645,-19.701 -6.984,0.297 -28.109,21.188 -73.368,19.474 C 44.609,42.57 31.929,17.209 0,0\" id=\"path2978\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(41.7861,666.9326)\" id=\"g2980\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 33.74,33.739 60.686,44.154 85.142,48.91 3.237,0.629 3.849,7.699 3.849,7.699 0,0 0.452,-5.209 2.718,-5.887 2.264,-0.679 5.207,8.151 5.207,8.151 0,0 -2.717,-7.926 0,-8.378 2.718,-0.452 7.699,7.699 7.699,7.699 0,0 -2.037,-7.019 -0.68,-7.472 1.359,-0.453 8.152,10.19 8.152,10.19 0,0 -4.076,-7.02 -0.226,-7.699 3.849,-0.68 9.467,4.79 9.467,4.79 0,0 -4.416,-5.005 -2.448,-5.696 8.379,-2.944 15.157,7.945 15.157,7.945 0,0 -1.571,-4.775 -5.645,-9.983 8.83,-2.265 15.389,11.04 15.389,11.04 l -6.559,-13.305 c 3.397,-1.811 16.983,13.812 16.983,13.812 0,0 -7.018,-12.226 -11.094,-14.717 2.264,-1.812 10.416,5.434 10.416,5.434 0,0 -6.567,-8.152 -4.076,-8.604 3.623,-2.945 16.982,15.171 16.982,15.171 0,0 -5.209,-10.643 -12.906,-19.021 6.435,-3.22 22.418,17.436 22.418,17.436 0,0 -0.453,-6.568 -12.002,-16.984 8.605,1.133 19.701,17.437 19.701,17.437 0,0 -4.076,-12.228 -13.814,-20.833 8.449,0.879 21.964,21.738 21.964,21.738 0,0 -5.207,-14.492 -15.849,-22.87 11.775,-2.604 28.758,14.944 28.758,14.944 0,0 -6.68,-12.453 -15.399,-17.548 9.738,-3.736 23.098,11.662 23.098,11.662 0,0 -13.36,-20.607 -34.647,-19.701 -6.982,0.298 -28.107,21.189 -73.367,19.474 C 44.609,42.57 31.928,17.209 0,0\" id=\"path2982\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2984\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2988)\" id=\"g2986\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2992\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2994\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g3000\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2996)\" id=\"g3002\" style=\"opacity:0.35000604\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(39.5195,660.6802)\" id=\"g3004\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 17.832,-8.945 34.137,1.358 54.686,-4.433 15.623,-4.404 34.645,-9.833 60.458,-6.096 25.814,3.735 47.893,14.944 58.424,34.985 3.283,8.943 16.642,-2.039 16.642,-2.039 0,0 -9.736,4.076 -9.509,2.151 0.226,-1.924 14.605,-8.604 14.605,-8.604 0,0 -13.021,4.076 -12.228,1.019 0.793,-3.057 16.302,-15.285 16.302,-15.285 0,0 -17.548,13.36 -19.019,11.549 -1.473,-1.812 7.472,-9.172 7.472,-9.172 0,0 -14.832,9.172 -20.041,6.467 -3.746,-1.943 15.399,-14.506 15.399,-14.506 0,0 -12.455,9.512 -15.399,7.021 -2.943,-2.492 14.04,-22.871 14.04,-22.871 0,0 -19.249,20.833 -21.172,19.814 -1.926,-1.019 5.32,-10.983 5.32,-10.983 0,0 -9.51,10.417 -12.113,8.605 -2.604,-1.812 13.586,-28.871 13.586,-28.871 0,0 -17.549,27.738 -24.795,23.098 11.379,-24.966 7.133,-28.533 7.133,-28.533 0,0 -1.452,25.47 -15.625,24.796 -7.133,-0.34 3.396,-19.021 3.396,-19.021 0,0 -9.691,17.062 -16.145,16.722 11.895,-22.511 7.655,-31.667 7.655,-31.667 0,0 1.967,19.226 -14.166,29.925 6.113,-5.433 -3.836,-29.925 -3.836,-29.925 0,0 8.752,36.091 -6.455,29.21 -2.403,-1.085 -0.17,-18.002 -0.17,-18.002 0,0 -3.057,19.362 -7.641,18.342 -2.673,-0.593 -16.984,-26.833 -16.984,-26.833 0,0 11.719,28.362 8.153,27.173 -2.598,-0.867 -7.473,-12.568 -7.473,-12.568 0,0 2.377,11.549 0,12.228 -2.377,0.68 -15.625,-12.228 -15.625,-12.228 0,0 9.851,11.549 8.152,13.927 -2.574,3.603 -5.591,3.772 -9.171,2.377 -5.209,-2.03 -12.227,-11.548 -12.227,-11.548 0,0 6.996,9.637 5.773,13.247 -1.963,5.8 -22.077,-11.209 -22.077,-11.209 0,0 11.888,11.209 9.171,13.587 -2.717,2.377 -17.471,1.642 -22.078,1.655 C 8.832,-6.454 4.124,-3.267 0,0\" id=\"path3006\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(38.8408,662.7183)\" id=\"g3008\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 17.832,-8.945 34.136,1.358 54.685,-4.434 15.623,-4.402 34.646,-9.832 60.46,-6.095 25.814,3.736 47.891,14.945 58.422,34.984 3.283,8.944 16.642,-2.037 16.642,-2.037 0,0 -9.736,4.075 -9.509,2.15 0.226,-1.924 14.605,-8.604 14.605,-8.604 0,0 -13.021,4.075 -12.228,1.018 0.793,-3.056 16.304,-15.284 16.304,-15.284 0,0 -17.55,13.361 -19.021,11.548 -1.471,-1.811 7.473,-9.17 7.473,-9.17 0,0 -14.833,9.17 -20.041,6.467 -3.747,-1.944 15.398,-14.506 15.398,-14.506 0,0 -12.455,9.511 -15.398,7.02 -2.944,-2.492 14.041,-22.871 14.041,-22.871 0,0 -19.25,20.833 -21.174,19.814 -1.924,-1.02 5.322,-10.982 5.322,-10.982 0,0 -9.512,10.416 -12.115,8.604 -2.604,-1.811 13.586,-28.871 13.586,-28.871 0,0 -17.549,27.739 -24.795,23.097 11.379,-24.965 7.133,-28.532 7.133,-28.532 0,0 -1.452,25.47 -15.625,24.795 -7.133,-0.34 3.396,-19.02 3.396,-19.02 0,0 -9.691,17.063 -16.144,16.723 11.896,-22.512 7.654,-31.668 7.654,-31.668 0,0 1.967,19.227 -14.166,29.926 6.113,-5.434 -3.836,-29.926 -3.836,-29.926 0,0 8.754,36.091 -6.453,29.21 -2.403,-1.086 -0.17,-18.002 -0.17,-18.002 0,0 -3.059,19.361 -7.642,18.342 -2.674,-0.593 -16.985,-26.833 -16.985,-26.833 0,0 11.719,28.362 8.153,27.172 -2.598,-0.865 -7.473,-12.566 -7.473,-12.566 0,0 2.378,11.548 0,12.227 -2.377,0.679 -15.624,-12.227 -15.624,-12.227 0,0 9.851,11.548 8.151,13.926 -2.574,3.603 -5.591,3.771 -9.17,2.376 -5.21,-2.029 -12.228,-11.547 -12.228,-11.547 0,0 6.996,9.638 5.774,13.247 -1.964,5.799 -22.077,-11.209 -22.077,-11.209 0,0 11.888,11.209 9.17,13.586 C 41.778,-5.774 27.024,-6.51 22.417,-6.496 8.831,-6.453 4.124,-3.267 0,0\" id=\"path3010\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "0.53.3" + }, + "name": "cass-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/cass-operator/0.53.3/v1.0.0/model.json b/server/meshmodel/cass-operator/0.53.3/v1.0.0/model.json new file mode 100644 index 00000000000..66a64a82fc6 --- /dev/null +++ b/server/meshmodel/cass-operator/0.53.3/v1.0.0/model.json @@ -0,0 +1,42 @@ +{ + "category": { + "name": "App Definition and Development" + }, + "displayName": "Apache Cassandra", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "capabilities": null, + "isAnnotation": false, + "primaryColor": "#373535", + "secondaryColor": "#00D3A9", + "shape": "barrel", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" xmlns:_xmlns=\"xmlns\" _xmlns:dc=\"http://purl.org/dc/elements/1.1/\" _xmlns:cc=\"http://creativecommons.org/ns#\" _xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" _xmlns:svg=\"http://www.w3.org/2000/svg\" version=\"1.1\" width=\"20\" height=\"20\" id=\"svg2816\" xml:space=\"preserve\"\u003e\u003ctitle xmlns=\"http://www.w3.org/2000/svg\" id=\"title3537\"\u003eApache Cassandra\u003c/title\u003e\u003cmetadata xmlns=\"http://www.w3.org/2000/svg\" id=\"metadata2822\"\u003e\u003cRDF xmlns=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\u003e\u003cWork xmlns=\"http://creativecommons.org/ns#\" xmlns:_=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" _:about=\"\"\u003e\u003cformat xmlns=\"http://purl.org/dc/elements/1.1/\"\u003eimage/svg+xml\u003c/format\u003e\u003ctype xmlns=\"http://purl.org/dc/elements/1.1/\" _:resource=\"http://purl.org/dc/dcmitype/StillImage\"\u003e\u003c/type\u003e\u003ctitle xmlns=\"http://purl.org/dc/elements/1.1/\"\u003eApache Cassandra\u003c/title\u003e\u003clicense xmlns=\"http://creativecommons.org/ns#\" _:resource=\"Apache License\"\u003e\u003c/license\u003e\u003ccreator xmlns=\"http://purl.org/dc/elements/1.1/\"\u003e\u003cAgent xmlns=\"http://creativecommons.org/ns#\"\u003e\u003ctitle xmlns=\"http://purl.org/dc/elements/1.1/\"\u003eApache Software Foundation\u003c/title\u003e\u003c/Agent\u003e\u003c/creator\u003e\u003csource xmlns=\"http://purl.org/dc/elements/1.1/\"\u003ehttps://svn.apache.org/repos/asf/cassandra/logo/cassandra.svg\u003c/source\u003e\u003c/Work\u003e\u003c/RDF\u003e\u003c/metadata\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\" id=\"defs2820\"\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2832\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2834\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2844\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2846\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2852\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 96.0078,715.93 88.2902,0 0,-62.176 -88.2902,0 0,62.176 z\" id=\"path2854\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2868\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2870\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2880\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2882\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2908\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2910\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2936\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2938\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2944\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 121.202,708.378 45.899,0 0,-45.859 -45.899,0 0,45.859 z\" id=\"path2946\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2960\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2962\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2968\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 40.4033,726.188 212.4017,0 0,-61.818 -212.4017,0 0,61.818 z\" id=\"path2970\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2988\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2990\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2996\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 39.5195,688.644 199.3805,0 0,-73.818 -199.3805,0 0,73.818 z\" id=\"path2998\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath3016\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path3018\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(-62.668647,-74.06425)\" id=\"layer1\" style=\"display:inline\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"matrix(1.25,0,0,-1.25,19.117647,990)\" id=\"g3012\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath3016)\" id=\"g3014\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(61.4912,609.1372)\" id=\"g3020\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 1.824,0 3.552,-0.432 4.417,-1.296 4.561,-2.641 3.36,-4.801 2.592,-4.801 1.68,-4.465 0.816,-4.272 -0.24,-4.272 c -4.368,0 -6.529,-4.513 -6.529,-8.977 0,-2.784 0.96,-4.465 3.169,-4.465 2.352,0 4.752,1.584 6.096,2.784 0.336,-0.239 0.768,-1.008 0.768,-1.872 0,-0.96 -0.288,-1.872 -1.152,-2.736 -1.536,-1.536 -4.128,-2.832 -7.873,-2.832 -4.32,0 -7.296,2.448 -7.296,8.161 C -13.057,-6.721 -8.113,0 -0.048,0 L 0,0 z\" id=\"path3022\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(75.6021,591.6636)\" id=\"g3024\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.352,0 6.625,4.129 7.825,12.001 0.048,0.48 0.096,0.624 0.192,1.104 -0.528,0.192 -1.248,0.336 -1.969,0.336 -1.776,0 -3.6,-0.528 -5.232,-2.736 -1.68,-2.352 -2.4,-5.28 -2.4,-7.633 C -1.584,1.057 -1.008,0 -0.048,0 L 0,0 z m -7.729,2.16 c 0,2.832 0.96,7.777 4.561,11.377 3.072,3.168 6.816,3.937 10.225,3.937 2.256,0 5.328,-0.72 7.248,-1.105 -0.48,-2.112 -1.632,-10.08 -2.16,-14.688 -0.24,-1.969 -0.336,-4.705 -0.24,-5.713 -1.584,-0.672 -4.56,-0.864 -5.377,-0.864 -0.431,0 -0.528,1.968 -0.383,3.84 0.047,0.624 0.144,1.536 0.191,1.92 -1.872,-3.12 -5.568,-5.76 -9.456,-5.76 -2.784,0 -4.609,2.304 -4.609,7.008 l 0,0.048 z\" id=\"path3026\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(101.8579,609.1372)\" id=\"g3028\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 1.968,0 3.84,-0.72 4.705,-1.632 -0.048,-1.345 -1.104,-3.6 -2.785,-2.976 -0.72,0.24 -1.44,0.431 -2.4,0.431 -1.296,0 -2.4,-0.576 -2.4,-1.775 0,-0.912 0.672,-1.585 3.888,-3.841 2.305,-1.68 3.217,-3.168 3.217,-5.28 0,-3.505 -3.313,-7.297 -9.073,-7.297 -2.352,0 -4.417,0.912 -5.089,1.872 -0.864,1.44 -0.192,4.272 0.769,3.793 1.248,-0.624 3.312,-1.297 4.992,-1.297 1.584,0 2.592,0.721 2.592,1.681 0,0.815 -0.72,1.536 -3.648,3.6 -2.449,1.824 -3.217,3.504 -3.217,5.424 0,3.984 3.409,7.297 8.401,7.297 L 0,0 z\" id=\"path3030\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(118.417,609.1372)\" id=\"g3032\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 1.969,0 3.841,-0.72 4.705,-1.632 -0.048,-1.345 -1.103,-3.6 -2.784,-2.976 -0.72,0.24 -1.441,0.431 -2.4,0.431 -1.296,0 -2.4,-0.576 -2.4,-1.775 0,-0.912 0.672,-1.585 3.888,-3.841 2.304,-1.68 3.216,-3.168 3.216,-5.28 0,-3.505 -3.313,-7.297 -9.073,-7.297 -2.352,0 -4.416,0.912 -5.088,1.872 -0.864,1.44 -0.192,4.272 0.768,3.793 1.248,-0.624 3.312,-1.297 4.992,-1.297 1.584,0 2.592,0.721 2.592,1.681 0,0.815 -0.72,1.536 -3.648,3.6 -2.448,1.824 -3.216,3.504 -3.216,5.424 0,3.984 3.408,7.297 8.401,7.297 L 0,0 z\" id=\"path3034\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(133.5361,591.6636)\" id=\"g3036\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.353,0 6.625,4.129 7.825,12.001 0.048,0.48 0.097,0.624 0.193,1.104 -0.529,0.192 -1.248,0.336 -1.969,0.336 -1.776,0 -3.6,-0.528 -5.233,-2.736 -1.679,-2.352 -2.4,-5.28 -2.4,-7.633 C -1.584,1.057 -1.008,0 -0.047,0 L 0,0 z m -7.729,2.16 c 0,2.832 0.961,7.777 4.561,11.377 3.072,3.168 6.816,3.937 10.225,3.937 2.256,0 5.329,-0.72 7.249,-1.105 -0.48,-2.112 -1.632,-10.08 -2.16,-14.688 -0.241,-1.969 -0.336,-4.705 -0.241,-5.713 -1.584,-0.672 -4.559,-0.864 -5.376,-0.864 -0.431,0 -0.528,1.968 -0.384,3.84 0.048,0.624 0.144,1.536 0.192,1.92 -1.872,-3.12 -5.568,-5.76 -9.456,-5.76 -2.785,0 -4.61,2.304 -4.61,7.008 l 0,0.048 z\" id=\"path3038\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(158.688,602.897)\" id=\"g3040\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.209,3.552 5.088,6.24 9.121,6.24 3.408,0 4.512,-3.168 3.889,-7.68 -0.336,-2.113 -0.912,-5.137 -1.297,-7.921 -0.336,-2.353 -0.576,-4.464 -0.527,-5.905 -1.248,-0.624 -4.897,-0.864 -5.713,-0.864 -0.336,0 -0.385,2.641 0.048,5.425 0.383,2.304 1.2,6.48 1.584,8.881 0.241,1.391 0.192,3.072 -1.152,3.072 -1.777,0 -6,-2.833 -8.113,-14.449 -0.145,-0.96 -0.528,-1.536 -1.057,-1.872 -0.719,-0.433 -2.256,-0.817 -5.375,-0.865 0.576,2.928 1.488,8.929 2.16,13.345 0.623,4.032 0.864,6.625 0.719,7.633 0.817,0.288 5.09,1.2 5.568,1.2 C 0.385,6.24 0.48,4.752 0,1.151 -0.047,0.815 -0.096,0.288 -0.145,0 L 0,0 z\" id=\"path3042\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(183.0728,591.7114)\" id=\"g3044\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.111,0 6.385,3.937 7.584,10.897 0.049,0.384 0.193,1.104 0.289,1.537 -0.625,0.576 -1.441,0.96 -2.736,0.96 -4.85,0 -7.01,-5.809 -7.01,-9.986 C -1.873,1.152 -1.104,0 -0.049,0 L 0,0 z m -3.168,-4.944 c -3.072,0 -4.992,2.736 -4.992,7.44 0,7.777 4.847,14.93 13.008,14.93 1.441,0 2.736,-0.384 3.552,-0.864 0.432,2.208 1.44,9.025 1.489,11.041 1.343,0.24 4.224,0.671 5.519,0.671 0.53,0 0.674,-0.527 0.481,-1.727 C 14.736,19.346 12.674,5.521 12.289,2.448 12,-0.144 11.953,-2.688 12,-4.128 10.465,-4.8 7.344,-4.944 6.529,-4.944 6.191,-4.944 6,-2.736 6.096,-0.768 6.145,-0.144 6.24,0.769 6.24,0.912 3.84,-3.024 0.527,-4.944 -3.121,-4.944 l -0.047,0 z\" id=\"path3046\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(208.0317,602.2241)\" id=\"g3048\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 2.545,5.665 5.568,6.913 7.537,6.913 8.162,6.913 9.121,6.529 9.553,6.049 9.746,4.465 8.498,1.297 7.393,0.097 6.816,0.385 6.098,0.673 5.281,0.673 c -1.633,0 -4.849,-2.545 -6.865,-13.489 -0.145,-0.913 -0.432,-1.297 -0.959,-1.537 -0.816,-0.48 -4.033,-0.864 -5.568,-0.912 0.718,3.937 1.966,11.953 2.447,16.658 0.144,1.2 0.191,3.408 0.096,4.272 0.912,0.432 4.513,1.248 5.328,1.248 0.433,0 0.769,-2.641 0.095,-6.913 L 0,0 z\" id=\"path3050\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(224.9751,591.6636)\" id=\"g3052\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.354,0 6.625,4.129 7.826,12.001 0.047,0.48 0.096,0.624 0.192,1.104 -0.528,0.192 -1.248,0.336 -1.969,0.336 -1.776,0 -3.6,-0.528 -5.233,-2.736 -1.679,-2.352 -2.4,-5.28 -2.4,-7.633 C -1.584,1.057 -1.008,0 -0.047,0 L 0,0 z m -7.729,2.16 c 0,2.832 0.961,7.777 4.561,11.377 3.072,3.168 6.816,3.937 10.225,3.937 2.256,0 5.328,-0.72 7.25,-1.105 -0.481,-2.112 -1.633,-10.08 -2.161,-14.688 -0.24,-1.969 -0.337,-4.705 -0.24,-5.713 -1.584,-0.672 -4.56,-0.864 -5.377,-0.864 -0.431,0 -0.527,1.968 -0.384,3.84 0.048,0.624 0.144,1.536 0.193,1.92 -1.873,-3.12 -5.568,-5.76 -9.457,-5.76 -2.785,0 -4.61,2.304 -4.61,7.008 l 0,0.048 z\" id=\"path3054\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\n\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(-62.668647,-74.06425)\" id=\"layer2\" style=\"display:inline\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"matrix(1.25,0,0,-1.25,19.117647,990)\" id=\"g4555\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2828\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2832)\" id=\"g2830\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(210.8784,690.4834)\" id=\"g2836\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 1.584,-18.452 -27.455,-36.014 -64.859,-39.223 -37.404,-3.209 -69.01,9.151 -70.592,27.602 -1.584,18.455 27.455,36.016 64.859,39.225 C -33.188,30.812 -1.582,18.455 0,0\" id=\"path2838\" style=\"fill:#bbe6fb;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2840\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2844)\" id=\"g2842\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2848\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2850\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2856\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2852)\" id=\"g2858\" style=\"opacity:0.35000604\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(141.3843,715.9233)\" id=\"g2860\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -14.268,0.232 -30.964,-5.433 -43.387,-10.738 -1.293,-3.726 -1.989,-7.689 -1.989,-11.797 0,-21.888 19.764,-39.634 44.145,-39.634 24.381,0 44.145,17.746 44.145,39.634 0,6.927 -1.984,13.435 -5.463,19.101 C 27.512,-1.889 13.842,-0.225 0,0\" id=\"path2862\" style=\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2864\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2868)\" id=\"g2866\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(140.1528,715.9277)\" id=\"g2872\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -7.899,0.482 -21.514,-3.639 -32.867,-7.75 -1.725,-4.071 -2.683,-8.526 -2.683,-13.201 0,-19.178 17.388,-34.725 35.782,-34.725 18.273,0 34.44,15.572 35.782,34.725 0.436,6.237 -1.711,12.114 -4.692,17.181 C 19.552,-1.697 7.061,-0.431 0,0\" id=\"path2874\" style=\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2876\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2880)\" id=\"g2878\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(119.8818,697.4946)\" id=\"g2884\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 0.969,2.146 2.437,3.197 3.859,4.996 3.701,5.422 3.355,6.815 3.355,7.298 c 0,2.156 1.749,3.906 3.906,3.906 0.509,0 0.995,-0.101 1.44,-0.278 6.465,4.927 14.976,7.075 23.529,5.163 0.781,-0.176 1.547,-0.389 2.299,-0.623 C 26.076,16.638 16.548,13.644 10.067,8.413 10.265,7.946 10.814,6.611 10.814,6.074 10.814,3.917 9.418,3.392 7.261,3.392 6.771,3.392 6.303,3.486 5.87,3.651 4.406,1.685 2.612,-2.06 1.734,-4.401 c 3.584,-3.206 6.822,-4.368 11.042,-5.945 -0.011,0.201 0.145,0.387 0.145,0.592 0,6.503 5.725,11.788 12.229,11.788 5.828,0 10.654,-4.238 11.596,-9.798 2.908,1.85 5.72,3.268 7.863,6.01 -0.5,0.61 -1.039,2.337 -1.039,3.187 0,1.957 1.588,3.544 3.545,3.544 0.277,0 0.543,-0.04 0.802,-0.1 1.088,2.236 1.909,4.606 2.434,7.05 -10.17,7.529 -29.847,6.502 -29.847,6.502 0,0 -15.658,0.817 -26.258,-4.349 C -5.047,8.969 -3.008,4.11 0,0\" id=\"path2886\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(168.4907,700.4282)\" id=\"g2888\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 0.719,-0.648 1.111,-1.217 1.42,-1.771 0.951,-1.71 -0.957,-3.275 -2.914,-3.275 -0.199,0 -0.391,0.027 -0.582,0.059 -2.205,-3.446 -6.067,-7.865 -9.498,-10.089 5.261,-0.862 10.222,-2.969 14.17,-6.225 2.875,5.151 5.08,12.589 5.08,18.907 0,4.809 -2.123,8.334 -5.328,10.92 C 2.18,5.95 0.805,2.347 0,0\" id=\"path2890\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(125.7842,667.8032)\" id=\"g2892\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 1.753,4.841 6.065,8.592 10.144,11.892 9.547,12.709 8.652,14.732 8.279,15.69 3.304,17.203 -1.098,20.035 -4.512,23.784 -4.537,23.675 -4.568,23.569 -4.594,23.46 -5.237,20.579 -5.355,17.692 -5.035,14.876 -2.653,14.432 -0.85,12.345 -0.85,9.834 -0.85,8.345 -2.155,6.187 -3.168,5.248 -2.067,2.872 -1.316,1.726 0,0\" id=\"path2894\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(125.4756,663.7393)\" id=\"g2896\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -2.091,2.079 -3.537,6.226 -4.894,8.83 -0.254,-0.039 -0.514,-0.066 -0.78,-0.066 -2.836,0 -5.807,2.38 -5.135,5.134 0.372,1.524 1.424,2.521 3.137,3.353 -0.39,3.157 -0.496,7.695 0.237,10.977 0.21,0.939 0.655,1.379 0.95,2.273 -3.129,4.579 -5.151,10.589 -5.151,16.552 0,0.218 0.011,0.433 0.016,0.649 -5.288,-2.652 -9.253,-6.83 -9.253,-13.407 0,-14.548 8.379,-28.819 20.846,-34.413 C -0.018,-0.079 -0.01,-0.039 0,0\" id=\"path2898\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(156.1313,683.8511)\" id=\"g2900\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -1.611,-4.582 -5.967,-7.873 -11.1,-7.873 -2.746,0 -5.265,0.947 -7.267,2.521 -4.127,-3.214 -7.871,-8.86 -9.774,-13.758 0.854,-0.919 1.449,-1.675 2.407,-2.49 2.887,-0.752 6.863,0 9.988,0 12.57,0 23.703,5.592 30.086,15.398 C 10.096,-3.263 5.09,-0.466 0,0\" id=\"path2902\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2904\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2908)\" id=\"g2906\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(119.5596,695.7944)\" id=\"g2912\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 0.969,2.146 2.184,4.132 3.605,5.931 -0.158,0.425 -0.25,0.884 -0.25,1.367 0,2.156 1.749,3.906 3.906,3.906 0.509,0 0.995,-0.101 1.44,-0.278 6.465,4.927 14.976,7.075 23.529,5.163 0.781,-0.176 1.547,-0.389 2.299,-0.623 -8.453,1.172 -17.187,-1.419 -23.668,-6.651 0.198,-0.466 0.306,-0.98 0.306,-1.517 0,-2.157 -1.749,-3.906 -3.906,-3.906 -0.49,0 -0.958,0.094 -1.391,0.259 -1.464,-1.966 -2.661,-4.138 -3.539,-6.48 3.078,-3.317 6.856,-5.94 11.075,-7.517 -0.01,0.201 -0.031,0.4 -0.031,0.605 0,6.503 5.271,11.775 11.775,11.775 5.828,0 10.654,-4.238 11.596,-9.798 2.908,1.85 5.492,4.226 7.634,6.968 -0.5,0.61 -0.81,1.379 -0.81,2.229 0,1.957 1.588,3.544 3.545,3.544 0.277,0 0.543,-0.04 0.802,-0.1 1.088,2.236 1.909,4.606 2.434,7.05 -10.17,7.529 -29.847,6.502 -29.847,6.502 0,0 -15.658,0.817 -26.258,-4.349 C -5.047,8.969 -3.008,4.11 0,0\" id=\"path2914\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(169.0396,699.8481)\" id=\"g2916\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 0.719,-0.648 1.18,-1.577 1.18,-2.621 0,-1.957 -1.588,-3.545 -3.545,-3.545 -0.199,0 -0.391,0.027 -0.582,0.059 -2.205,-3.446 -5.127,-6.384 -8.559,-8.608 5.072,-0.793 9.846,-2.945 13.793,-6.201 2.875,5.151 4.518,11.084 4.518,17.402 0,4.809 -2.123,8.334 -5.328,10.92 C 1.309,4.83 0.805,2.347 0,0\" id=\"path2918\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(126.3252,666.6401)\" id=\"g2920\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 1.753,4.841 4.799,9.185 8.878,12.484 8.281,13.302 7.789,14.195 7.416,15.153 2.44,16.666 -1.961,19.498 -5.375,23.247 -5.4,23.138 -5.432,23.032 -5.457,22.923 -6.101,20.042 -6.219,17.155 -5.898,14.339 -3.517,13.895 -1.713,11.808 -1.713,9.297 -1.713,7.808 -2.352,6.469 -3.365,5.53 -2.446,3.582 -1.316,1.726 0,0\" id=\"path2922\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(125.4619,663.7983)\" id=\"g2924\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -2.091,2.079 -3.846,4.467 -5.202,7.07 -0.255,-0.039 -0.515,-0.065 -0.78,-0.065 -2.836,0 -5.135,2.299 -5.135,5.134 0,2.032 1.184,3.784 2.897,4.616 -0.389,3.156 -0.257,6.432 0.477,9.714 0.21,0.938 0.466,1.854 0.761,2.749 -3.129,4.578 -4.962,10.113 -4.962,16.076 0,0.218 0.01,0.433 0.015,0.648 -5.288,-2.651 -9.253,-6.83 -9.253,-13.406 0,-14.549 8.688,-27.06 21.155,-32.654 C -0.018,-0.079 -0.01,-0.039 0,0\" id=\"path2926\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(155.8091,682.1509)\" id=\"g2928\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -1.611,-4.582 -5.967,-7.873 -11.1,-7.873 -2.746,0 -5.265,0.947 -7.267,2.521 -4.127,-3.214 -7.242,-7.595 -9.144,-12.494 0.853,-0.919 1.765,-1.785 2.723,-2.599 2.888,-0.752 5.917,-1.155 9.042,-1.155 12.57,0 23.621,6.49 30.004,16.295 C 10.014,-2.365 5.09,-0.466 0,0\" id=\"path2930\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2932\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2936)\" id=\"g2934\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2940\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2942\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2948\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2944)\" id=\"g2950\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(156.2222,685.187)\" id=\"g2952\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 10.879,2.595 -0.041,3.152 8.846,9.944 -1.238,6.329 5.615,15.826 -3.85,9.535 l 3.309,11.117 -6.5,-9.163 -0.148,11.579 -4.277,-10.314 -3.566,10.437 0.193,-12.295 -6.163,11.021 3.335,-11.702 -9.997,7.27 7.831,-9.84 -12.411,4.564 9.795,-7.247 -12.56,-0.386 12.842,-3.314 -12.853,-2.779 12.687,-0.92 -10.699,-6.851 11.017,3.994 -7.644,-9.681 9.659,7.79 -3.478,-12.991 7.457,10.572 -1.045,-12.486 4.233,11.319 3.603,-11.897 0.876,11.933 5.348,-10.181 -3.16,11.645 9.793,-7.586 -6.322,9.672 10.744,-4.186 -8.215,8.073 L 10.85,-4.164 0,0 z\" id=\"path2954\" style=\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2956\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2960)\" id=\"g2958\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2964\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2966\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2972\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2968)\" id=\"g2974\" style=\"opacity:0.35000604\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(40.4033,664.3701)\" id=\"g2976\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 33.74,33.739 60.687,44.155 85.143,48.91 3.236,0.629 3.848,7.7 3.848,7.7 0,0 0.453,-5.208 2.718,-5.887 2.264,-0.68 5.207,8.152 5.207,8.152 0,0 -2.717,-7.926 0,-8.379 2.718,-0.453 7.699,7.699 7.699,7.699 0,0 -2.037,-7.019 -0.678,-7.472 1.357,-0.453 8.15,10.189 8.15,10.189 0,0 -4.076,-7.019 -0.226,-7.699 3.851,-0.679 9.467,4.791 9.467,4.791 0,0 -4.416,-5.005 -2.448,-5.696 8.379,-2.945 15.159,7.945 15.159,7.945 0,0 -1.571,-4.775 -5.647,-9.983 8.83,-2.264 15.389,11.039 15.389,11.039 l -6.559,-13.303 c 3.397,-1.813 16.985,13.812 16.985,13.812 0,0 -7.02,-12.228 -11.096,-14.718 2.264,-1.812 10.416,5.434 10.416,5.434 0,0 -6.567,-8.151 -4.076,-8.604 3.623,-2.944 16.982,15.171 16.982,15.171 0,0 -5.207,-10.642 -12.906,-19.021 6.435,-3.219 22.418,17.436 22.418,17.436 0,0 -0.453,-6.567 -12.002,-16.983 8.605,1.132 19.701,17.436 19.701,17.436 0,0 -4.076,-12.228 -13.814,-20.832 8.449,0.879 21.964,21.738 21.964,21.738 0,0 -5.207,-14.492 -15.849,-22.871 11.775,-2.604 28.758,14.945 28.758,14.945 0,0 -6.68,-12.455 -15.399,-17.549 9.738,-3.736 23.098,11.662 23.098,11.662 0,0 -13.36,-20.607 -34.645,-19.701 -6.984,0.297 -28.109,21.188 -73.368,19.474 C 44.609,42.57 31.929,17.209 0,0\" id=\"path2978\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(41.7861,666.9326)\" id=\"g2980\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 33.74,33.739 60.686,44.154 85.142,48.91 3.237,0.629 3.849,7.699 3.849,7.699 0,0 0.452,-5.209 2.718,-5.887 2.264,-0.679 5.207,8.151 5.207,8.151 0,0 -2.717,-7.926 0,-8.378 2.718,-0.452 7.699,7.699 7.699,7.699 0,0 -2.037,-7.019 -0.68,-7.472 1.359,-0.453 8.152,10.19 8.152,10.19 0,0 -4.076,-7.02 -0.226,-7.699 3.849,-0.68 9.467,4.79 9.467,4.79 0,0 -4.416,-5.005 -2.448,-5.696 8.379,-2.944 15.157,7.945 15.157,7.945 0,0 -1.571,-4.775 -5.645,-9.983 8.83,-2.265 15.389,11.04 15.389,11.04 l -6.559,-13.305 c 3.397,-1.811 16.983,13.812 16.983,13.812 0,0 -7.018,-12.226 -11.094,-14.717 2.264,-1.812 10.416,5.434 10.416,5.434 0,0 -6.567,-8.152 -4.076,-8.604 3.623,-2.945 16.982,15.171 16.982,15.171 0,0 -5.209,-10.643 -12.906,-19.021 6.435,-3.22 22.418,17.436 22.418,17.436 0,0 -0.453,-6.568 -12.002,-16.984 8.605,1.133 19.701,17.437 19.701,17.437 0,0 -4.076,-12.228 -13.814,-20.833 8.449,0.879 21.964,21.738 21.964,21.738 0,0 -5.207,-14.492 -15.849,-22.87 11.775,-2.604 28.758,14.944 28.758,14.944 0,0 -6.68,-12.453 -15.399,-17.548 9.738,-3.736 23.098,11.662 23.098,11.662 0,0 -13.36,-20.607 -34.647,-19.701 -6.982,0.298 -28.107,21.189 -73.367,19.474 C 44.609,42.57 31.928,17.209 0,0\" id=\"path2982\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2984\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2988)\" id=\"g2986\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2992\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2994\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g3000\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2996)\" id=\"g3002\" style=\"opacity:0.35000604\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(39.5195,660.6802)\" id=\"g3004\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 17.832,-8.945 34.137,1.358 54.686,-4.433 15.623,-4.404 34.645,-9.833 60.458,-6.096 25.814,3.735 47.893,14.944 58.424,34.985 3.283,8.943 16.642,-2.039 16.642,-2.039 0,0 -9.736,4.076 -9.509,2.151 0.226,-1.924 14.605,-8.604 14.605,-8.604 0,0 -13.021,4.076 -12.228,1.019 0.793,-3.057 16.302,-15.285 16.302,-15.285 0,0 -17.548,13.36 -19.019,11.549 -1.473,-1.812 7.472,-9.172 7.472,-9.172 0,0 -14.832,9.172 -20.041,6.467 -3.746,-1.943 15.399,-14.506 15.399,-14.506 0,0 -12.455,9.512 -15.399,7.021 -2.943,-2.492 14.04,-22.871 14.04,-22.871 0,0 -19.249,20.833 -21.172,19.814 -1.926,-1.019 5.32,-10.983 5.32,-10.983 0,0 -9.51,10.417 -12.113,8.605 -2.604,-1.812 13.586,-28.871 13.586,-28.871 0,0 -17.549,27.738 -24.795,23.098 11.379,-24.966 7.133,-28.533 7.133,-28.533 0,0 -1.452,25.47 -15.625,24.796 -7.133,-0.34 3.396,-19.021 3.396,-19.021 0,0 -9.691,17.062 -16.145,16.722 11.895,-22.511 7.655,-31.667 7.655,-31.667 0,0 1.967,19.226 -14.166,29.925 6.113,-5.433 -3.836,-29.925 -3.836,-29.925 0,0 8.752,36.091 -6.455,29.21 -2.403,-1.085 -0.17,-18.002 -0.17,-18.002 0,0 -3.057,19.362 -7.641,18.342 -2.673,-0.593 -16.984,-26.833 -16.984,-26.833 0,0 11.719,28.362 8.153,27.173 -2.598,-0.867 -7.473,-12.568 -7.473,-12.568 0,0 2.377,11.549 0,12.228 -2.377,0.68 -15.625,-12.228 -15.625,-12.228 0,0 9.851,11.549 8.152,13.927 -2.574,3.603 -5.591,3.772 -9.171,2.377 -5.209,-2.03 -12.227,-11.548 -12.227,-11.548 0,0 6.996,9.637 5.773,13.247 -1.963,5.8 -22.077,-11.209 -22.077,-11.209 0,0 11.888,11.209 9.171,13.587 -2.717,2.377 -17.471,1.642 -22.078,1.655 C 8.832,-6.454 4.124,-3.267 0,0\" id=\"path3006\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(38.8408,662.7183)\" id=\"g3008\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 17.832,-8.945 34.136,1.358 54.685,-4.434 15.623,-4.402 34.646,-9.832 60.46,-6.095 25.814,3.736 47.891,14.945 58.422,34.984 3.283,8.944 16.642,-2.037 16.642,-2.037 0,0 -9.736,4.075 -9.509,2.15 0.226,-1.924 14.605,-8.604 14.605,-8.604 0,0 -13.021,4.075 -12.228,1.018 0.793,-3.056 16.304,-15.284 16.304,-15.284 0,0 -17.55,13.361 -19.021,11.548 -1.471,-1.811 7.473,-9.17 7.473,-9.17 0,0 -14.833,9.17 -20.041,6.467 -3.747,-1.944 15.398,-14.506 15.398,-14.506 0,0 -12.455,9.511 -15.398,7.02 -2.944,-2.492 14.041,-22.871 14.041,-22.871 0,0 -19.25,20.833 -21.174,19.814 -1.924,-1.02 5.322,-10.982 5.322,-10.982 0,0 -9.512,10.416 -12.115,8.604 -2.604,-1.811 13.586,-28.871 13.586,-28.871 0,0 -17.549,27.739 -24.795,23.097 11.379,-24.965 7.133,-28.532 7.133,-28.532 0,0 -1.452,25.47 -15.625,24.795 -7.133,-0.34 3.396,-19.02 3.396,-19.02 0,0 -9.691,17.063 -16.144,16.723 11.896,-22.512 7.654,-31.668 7.654,-31.668 0,0 1.967,19.227 -14.166,29.926 6.113,-5.434 -3.836,-29.926 -3.836,-29.926 0,0 8.754,36.091 -6.453,29.21 -2.403,-1.086 -0.17,-18.002 -0.17,-18.002 0,0 -3.059,19.361 -7.642,18.342 -2.674,-0.593 -16.985,-26.833 -16.985,-26.833 0,0 11.719,28.362 8.153,27.172 -2.598,-0.865 -7.473,-12.566 -7.473,-12.566 0,0 2.378,11.548 0,12.227 -2.377,0.679 -15.624,-12.227 -15.624,-12.227 0,0 9.851,11.548 8.151,13.926 -2.574,3.603 -5.591,3.771 -9.17,2.376 -5.21,-2.029 -12.228,-11.547 -12.228,-11.547 0,0 6.996,9.638 5.774,13.247 -1.964,5.799 -22.077,-11.209 -22.077,-11.209 0,0 11.888,11.209 9.17,13.586 C 41.778,-5.774 27.024,-6.51 22.417,-6.496 8.831,-6.453 4.124,-3.267 0,0\" id=\"path3010\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" xmlns:_xmlns=\"xmlns\" _xmlns:dc=\"http://purl.org/dc/elements/1.1/\" _xmlns:cc=\"http://creativecommons.org/ns#\" _xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" _xmlns:svg=\"http://www.w3.org/2000/svg\" version=\"1.1\" width=\"20\" height=\"20\" id=\"svg2816\" xml:space=\"preserve\"\u003e\u003ctitle xmlns=\"http://www.w3.org/2000/svg\" id=\"title3537\"\u003eApache Cassandra\u003c/title\u003e\u003cmetadata xmlns=\"http://www.w3.org/2000/svg\" id=\"metadata2822\"\u003e\u003cRDF xmlns=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\u003e\u003cWork xmlns=\"http://creativecommons.org/ns#\" xmlns:_=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" _:about=\"\"\u003e\u003cformat xmlns=\"http://purl.org/dc/elements/1.1/\"\u003eimage/svg+xml\u003c/format\u003e\u003ctype xmlns=\"http://purl.org/dc/elements/1.1/\" _:resource=\"http://purl.org/dc/dcmitype/StillImage\"\u003e\u003c/type\u003e\u003ctitle xmlns=\"http://purl.org/dc/elements/1.1/\"\u003eApache Cassandra\u003c/title\u003e\u003clicense xmlns=\"http://creativecommons.org/ns#\" _:resource=\"Apache License\"\u003e\u003c/license\u003e\u003ccreator xmlns=\"http://purl.org/dc/elements/1.1/\"\u003e\u003cAgent xmlns=\"http://creativecommons.org/ns#\"\u003e\u003ctitle xmlns=\"http://purl.org/dc/elements/1.1/\"\u003eApache Software Foundation\u003c/title\u003e\u003c/Agent\u003e\u003c/creator\u003e\u003csource xmlns=\"http://purl.org/dc/elements/1.1/\"\u003ehttps://svn.apache.org/repos/asf/cassandra/logo/cassandra.svg\u003c/source\u003e\u003c/Work\u003e\u003c/RDF\u003e\u003c/metadata\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\" id=\"defs2820\"\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2832\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2834\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2844\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2846\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2852\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 96.0078,715.93 88.2902,0 0,-62.176 -88.2902,0 0,62.176 z\" id=\"path2854\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2868\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2870\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2880\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2882\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2908\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2910\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2936\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2938\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2944\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 121.202,708.378 45.899,0 0,-45.859 -45.899,0 0,45.859 z\" id=\"path2946\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2960\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2962\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2968\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 40.4033,726.188 212.4017,0 0,-61.818 -212.4017,0 0,61.818 z\" id=\"path2970\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2988\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path2990\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath2996\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 39.5195,688.644 199.3805,0 0,-73.818 -199.3805,0 0,73.818 z\" id=\"path2998\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clipPath3016\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,792 612,792 612,0 0,0 0,792 z\" id=\"path3018\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(-62.668647,-74.06425)\" id=\"layer1\" style=\"display:inline\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"matrix(1.25,0,0,-1.25,19.117647,990)\" id=\"g3012\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath3016)\" id=\"g3014\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(61.4912,609.1372)\" id=\"g3020\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 1.824,0 3.552,-0.432 4.417,-1.296 4.561,-2.641 3.36,-4.801 2.592,-4.801 1.68,-4.465 0.816,-4.272 -0.24,-4.272 c -4.368,0 -6.529,-4.513 -6.529,-8.977 0,-2.784 0.96,-4.465 3.169,-4.465 2.352,0 4.752,1.584 6.096,2.784 0.336,-0.239 0.768,-1.008 0.768,-1.872 0,-0.96 -0.288,-1.872 -1.152,-2.736 -1.536,-1.536 -4.128,-2.832 -7.873,-2.832 -4.32,0 -7.296,2.448 -7.296,8.161 C -13.057,-6.721 -8.113,0 -0.048,0 L 0,0 z\" id=\"path3022\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(75.6021,591.6636)\" id=\"g3024\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.352,0 6.625,4.129 7.825,12.001 0.048,0.48 0.096,0.624 0.192,1.104 -0.528,0.192 -1.248,0.336 -1.969,0.336 -1.776,0 -3.6,-0.528 -5.232,-2.736 -1.68,-2.352 -2.4,-5.28 -2.4,-7.633 C -1.584,1.057 -1.008,0 -0.048,0 L 0,0 z m -7.729,2.16 c 0,2.832 0.96,7.777 4.561,11.377 3.072,3.168 6.816,3.937 10.225,3.937 2.256,0 5.328,-0.72 7.248,-1.105 -0.48,-2.112 -1.632,-10.08 -2.16,-14.688 -0.24,-1.969 -0.336,-4.705 -0.24,-5.713 -1.584,-0.672 -4.56,-0.864 -5.377,-0.864 -0.431,0 -0.528,1.968 -0.383,3.84 0.047,0.624 0.144,1.536 0.191,1.92 -1.872,-3.12 -5.568,-5.76 -9.456,-5.76 -2.784,0 -4.609,2.304 -4.609,7.008 l 0,0.048 z\" id=\"path3026\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(101.8579,609.1372)\" id=\"g3028\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 1.968,0 3.84,-0.72 4.705,-1.632 -0.048,-1.345 -1.104,-3.6 -2.785,-2.976 -0.72,0.24 -1.44,0.431 -2.4,0.431 -1.296,0 -2.4,-0.576 -2.4,-1.775 0,-0.912 0.672,-1.585 3.888,-3.841 2.305,-1.68 3.217,-3.168 3.217,-5.28 0,-3.505 -3.313,-7.297 -9.073,-7.297 -2.352,0 -4.417,0.912 -5.089,1.872 -0.864,1.44 -0.192,4.272 0.769,3.793 1.248,-0.624 3.312,-1.297 4.992,-1.297 1.584,0 2.592,0.721 2.592,1.681 0,0.815 -0.72,1.536 -3.648,3.6 -2.449,1.824 -3.217,3.504 -3.217,5.424 0,3.984 3.409,7.297 8.401,7.297 L 0,0 z\" id=\"path3030\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(118.417,609.1372)\" id=\"g3032\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 1.969,0 3.841,-0.72 4.705,-1.632 -0.048,-1.345 -1.103,-3.6 -2.784,-2.976 -0.72,0.24 -1.441,0.431 -2.4,0.431 -1.296,0 -2.4,-0.576 -2.4,-1.775 0,-0.912 0.672,-1.585 3.888,-3.841 2.304,-1.68 3.216,-3.168 3.216,-5.28 0,-3.505 -3.313,-7.297 -9.073,-7.297 -2.352,0 -4.416,0.912 -5.088,1.872 -0.864,1.44 -0.192,4.272 0.768,3.793 1.248,-0.624 3.312,-1.297 4.992,-1.297 1.584,0 2.592,0.721 2.592,1.681 0,0.815 -0.72,1.536 -3.648,3.6 -2.448,1.824 -3.216,3.504 -3.216,5.424 0,3.984 3.408,7.297 8.401,7.297 L 0,0 z\" id=\"path3034\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(133.5361,591.6636)\" id=\"g3036\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.353,0 6.625,4.129 7.825,12.001 0.048,0.48 0.097,0.624 0.193,1.104 -0.529,0.192 -1.248,0.336 -1.969,0.336 -1.776,0 -3.6,-0.528 -5.233,-2.736 -1.679,-2.352 -2.4,-5.28 -2.4,-7.633 C -1.584,1.057 -1.008,0 -0.047,0 L 0,0 z m -7.729,2.16 c 0,2.832 0.961,7.777 4.561,11.377 3.072,3.168 6.816,3.937 10.225,3.937 2.256,0 5.329,-0.72 7.249,-1.105 -0.48,-2.112 -1.632,-10.08 -2.16,-14.688 -0.241,-1.969 -0.336,-4.705 -0.241,-5.713 -1.584,-0.672 -4.559,-0.864 -5.376,-0.864 -0.431,0 -0.528,1.968 -0.384,3.84 0.048,0.624 0.144,1.536 0.192,1.92 -1.872,-3.12 -5.568,-5.76 -9.456,-5.76 -2.785,0 -4.61,2.304 -4.61,7.008 l 0,0.048 z\" id=\"path3038\" style=\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(158.688,602.897)\" id=\"g3040\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.209,3.552 5.088,6.24 9.121,6.24 3.408,0 4.512,-3.168 3.889,-7.68 -0.336,-2.113 -0.912,-5.137 -1.297,-7.921 -0.336,-2.353 -0.576,-4.464 -0.527,-5.905 -1.248,-0.624 -4.897,-0.864 -5.713,-0.864 -0.336,0 -0.385,2.641 0.048,5.425 0.383,2.304 1.2,6.48 1.584,8.881 0.241,1.391 0.192,3.072 -1.152,3.072 -1.777,0 -6,-2.833 -8.113,-14.449 -0.145,-0.96 -0.528,-1.536 -1.057,-1.872 -0.719,-0.433 -2.256,-0.817 -5.375,-0.865 0.576,2.928 1.488,8.929 2.16,13.345 0.623,4.032 0.864,6.625 0.719,7.633 0.817,0.288 5.09,1.2 5.568,1.2 C 0.385,6.24 0.48,4.752 0,1.151 -0.047,0.815 -0.096,0.288 -0.145,0 L 0,0 z\" id=\"path3042\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(183.0728,591.7114)\" id=\"g3044\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.111,0 6.385,3.937 7.584,10.897 0.049,0.384 0.193,1.104 0.289,1.537 -0.625,0.576 -1.441,0.96 -2.736,0.96 -4.85,0 -7.01,-5.809 -7.01,-9.986 C -1.873,1.152 -1.104,0 -0.049,0 L 0,0 z m -3.168,-4.944 c -3.072,0 -4.992,2.736 -4.992,7.44 0,7.777 4.847,14.93 13.008,14.93 1.441,0 2.736,-0.384 3.552,-0.864 0.432,2.208 1.44,9.025 1.489,11.041 1.343,0.24 4.224,0.671 5.519,0.671 0.53,0 0.674,-0.527 0.481,-1.727 C 14.736,19.346 12.674,5.521 12.289,2.448 12,-0.144 11.953,-2.688 12,-4.128 10.465,-4.8 7.344,-4.944 6.529,-4.944 6.191,-4.944 6,-2.736 6.096,-0.768 6.145,-0.144 6.24,0.769 6.24,0.912 3.84,-3.024 0.527,-4.944 -3.121,-4.944 l -0.047,0 z\" id=\"path3046\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(208.0317,602.2241)\" id=\"g3048\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 2.545,5.665 5.568,6.913 7.537,6.913 8.162,6.913 9.121,6.529 9.553,6.049 9.746,4.465 8.498,1.297 7.393,0.097 6.816,0.385 6.098,0.673 5.281,0.673 c -1.633,0 -4.849,-2.545 -6.865,-13.489 -0.145,-0.913 -0.432,-1.297 -0.959,-1.537 -0.816,-0.48 -4.033,-0.864 -5.568,-0.912 0.718,3.937 1.966,11.953 2.447,16.658 0.144,1.2 0.191,3.408 0.096,4.272 0.912,0.432 4.513,1.248 5.328,1.248 0.433,0 0.769,-2.641 0.095,-6.913 L 0,0 z\" id=\"path3050\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(224.9751,591.6636)\" id=\"g3052\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 2.354,0 6.625,4.129 7.826,12.001 0.047,0.48 0.096,0.624 0.192,1.104 -0.528,0.192 -1.248,0.336 -1.969,0.336 -1.776,0 -3.6,-0.528 -5.233,-2.736 -1.679,-2.352 -2.4,-5.28 -2.4,-7.633 C -1.584,1.057 -1.008,0 -0.047,0 L 0,0 z m -7.729,2.16 c 0,2.832 0.961,7.777 4.561,11.377 3.072,3.168 6.816,3.937 10.225,3.937 2.256,0 5.328,-0.72 7.25,-1.105 -0.481,-2.112 -1.633,-10.08 -2.161,-14.688 -0.24,-1.969 -0.337,-4.705 -0.24,-5.713 -1.584,-0.672 -4.56,-0.864 -5.377,-0.864 -0.431,0 -0.527,1.968 -0.384,3.84 0.048,0.624 0.144,1.536 0.193,1.92 -1.873,-3.12 -5.568,-5.76 -9.457,-5.76 -2.785,0 -4.61,2.304 -4.61,7.008 l 0,0.048 z\" id=\"path3054\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\n\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(-62.668647,-74.06425)\" id=\"layer2\" style=\"display:inline\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"matrix(1.25,0,0,-1.25,19.117647,990)\" id=\"g4555\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2828\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2832)\" id=\"g2830\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(210.8784,690.4834)\" id=\"g2836\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 1.584,-18.452 -27.455,-36.014 -64.859,-39.223 -37.404,-3.209 -69.01,9.151 -70.592,27.602 -1.584,18.455 27.455,36.016 64.859,39.225 C -33.188,30.812 -1.582,18.455 0,0\" id=\"path2838\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2840\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2844)\" id=\"g2842\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2848\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2850\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2856\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2852)\" id=\"g2858\" style=\"opacity:0.35000604\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(141.3843,715.9233)\" id=\"g2860\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -14.268,0.232 -30.964,-5.433 -43.387,-10.738 -1.293,-3.726 -1.989,-7.689 -1.989,-11.797 0,-21.888 19.764,-39.634 44.145,-39.634 24.381,0 44.145,17.746 44.145,39.634 0,6.927 -1.984,13.435 -5.463,19.101 C 27.512,-1.889 13.842,-0.225 0,0\" id=\"path2862\" style=\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2864\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2868)\" id=\"g2866\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(140.1528,715.9277)\" id=\"g2872\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -7.899,0.482 -21.514,-3.639 -32.867,-7.75 -1.725,-4.071 -2.683,-8.526 -2.683,-13.201 0,-19.178 17.388,-34.725 35.782,-34.725 18.273,0 34.44,15.572 35.782,34.725 0.436,6.237 -1.711,12.114 -4.692,17.181 C 19.552,-1.697 7.061,-0.431 0,0\" id=\"path2874\" style=\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2876\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2880)\" id=\"g2878\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(119.8818,697.4946)\" id=\"g2884\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 0.969,2.146 2.437,3.197 3.859,4.996 3.701,5.422 3.355,6.815 3.355,7.298 c 0,2.156 1.749,3.906 3.906,3.906 0.509,0 0.995,-0.101 1.44,-0.278 6.465,4.927 14.976,7.075 23.529,5.163 0.781,-0.176 1.547,-0.389 2.299,-0.623 C 26.076,16.638 16.548,13.644 10.067,8.413 10.265,7.946 10.814,6.611 10.814,6.074 10.814,3.917 9.418,3.392 7.261,3.392 6.771,3.392 6.303,3.486 5.87,3.651 4.406,1.685 2.612,-2.06 1.734,-4.401 c 3.584,-3.206 6.822,-4.368 11.042,-5.945 -0.011,0.201 0.145,0.387 0.145,0.592 0,6.503 5.725,11.788 12.229,11.788 5.828,0 10.654,-4.238 11.596,-9.798 2.908,1.85 5.72,3.268 7.863,6.01 -0.5,0.61 -1.039,2.337 -1.039,3.187 0,1.957 1.588,3.544 3.545,3.544 0.277,0 0.543,-0.04 0.802,-0.1 1.088,2.236 1.909,4.606 2.434,7.05 -10.17,7.529 -29.847,6.502 -29.847,6.502 0,0 -15.658,0.817 -26.258,-4.349 C -5.047,8.969 -3.008,4.11 0,0\" id=\"path2886\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(168.4907,700.4282)\" id=\"g2888\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 0.719,-0.648 1.111,-1.217 1.42,-1.771 0.951,-1.71 -0.957,-3.275 -2.914,-3.275 -0.199,0 -0.391,0.027 -0.582,0.059 -2.205,-3.446 -6.067,-7.865 -9.498,-10.089 5.261,-0.862 10.222,-2.969 14.17,-6.225 2.875,5.151 5.08,12.589 5.08,18.907 0,4.809 -2.123,8.334 -5.328,10.92 C 2.18,5.95 0.805,2.347 0,0\" id=\"path2890\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(125.7842,667.8032)\" id=\"g2892\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 1.753,4.841 6.065,8.592 10.144,11.892 9.547,12.709 8.652,14.732 8.279,15.69 3.304,17.203 -1.098,20.035 -4.512,23.784 -4.537,23.675 -4.568,23.569 -4.594,23.46 -5.237,20.579 -5.355,17.692 -5.035,14.876 -2.653,14.432 -0.85,12.345 -0.85,9.834 -0.85,8.345 -2.155,6.187 -3.168,5.248 -2.067,2.872 -1.316,1.726 0,0\" id=\"path2894\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(125.4756,663.7393)\" id=\"g2896\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -2.091,2.079 -3.537,6.226 -4.894,8.83 -0.254,-0.039 -0.514,-0.066 -0.78,-0.066 -2.836,0 -5.807,2.38 -5.135,5.134 0.372,1.524 1.424,2.521 3.137,3.353 -0.39,3.157 -0.496,7.695 0.237,10.977 0.21,0.939 0.655,1.379 0.95,2.273 -3.129,4.579 -5.151,10.589 -5.151,16.552 0,0.218 0.011,0.433 0.016,0.649 -5.288,-2.652 -9.253,-6.83 -9.253,-13.407 0,-14.548 8.379,-28.819 20.846,-34.413 C -0.018,-0.079 -0.01,-0.039 0,0\" id=\"path2898\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(156.1313,683.8511)\" id=\"g2900\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -1.611,-4.582 -5.967,-7.873 -11.1,-7.873 -2.746,0 -5.265,0.947 -7.267,2.521 -4.127,-3.214 -7.871,-8.86 -9.774,-13.758 0.854,-0.919 1.449,-1.675 2.407,-2.49 2.887,-0.752 6.863,0 9.988,0 12.57,0 23.703,5.592 30.086,15.398 C 10.096,-3.263 5.09,-0.466 0,0\" id=\"path2902\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2904\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2908)\" id=\"g2906\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(119.5596,695.7944)\" id=\"g2912\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 0.969,2.146 2.184,4.132 3.605,5.931 -0.158,0.425 -0.25,0.884 -0.25,1.367 0,2.156 1.749,3.906 3.906,3.906 0.509,0 0.995,-0.101 1.44,-0.278 6.465,4.927 14.976,7.075 23.529,5.163 0.781,-0.176 1.547,-0.389 2.299,-0.623 -8.453,1.172 -17.187,-1.419 -23.668,-6.651 0.198,-0.466 0.306,-0.98 0.306,-1.517 0,-2.157 -1.749,-3.906 -3.906,-3.906 -0.49,0 -0.958,0.094 -1.391,0.259 -1.464,-1.966 -2.661,-4.138 -3.539,-6.48 3.078,-3.317 6.856,-5.94 11.075,-7.517 -0.01,0.201 -0.031,0.4 -0.031,0.605 0,6.503 5.271,11.775 11.775,11.775 5.828,0 10.654,-4.238 11.596,-9.798 2.908,1.85 5.492,4.226 7.634,6.968 -0.5,0.61 -0.81,1.379 -0.81,2.229 0,1.957 1.588,3.544 3.545,3.544 0.277,0 0.543,-0.04 0.802,-0.1 1.088,2.236 1.909,4.606 2.434,7.05 -10.17,7.529 -29.847,6.502 -29.847,6.502 0,0 -15.658,0.817 -26.258,-4.349 C -5.047,8.969 -3.008,4.11 0,0\" id=\"path2914\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(169.0396,699.8481)\" id=\"g2916\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 0.719,-0.648 1.18,-1.577 1.18,-2.621 0,-1.957 -1.588,-3.545 -3.545,-3.545 -0.199,0 -0.391,0.027 -0.582,0.059 -2.205,-3.446 -5.127,-6.384 -8.559,-8.608 5.072,-0.793 9.846,-2.945 13.793,-6.201 2.875,5.151 4.518,11.084 4.518,17.402 0,4.809 -2.123,8.334 -5.328,10.92 C 1.309,4.83 0.805,2.347 0,0\" id=\"path2918\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(126.3252,666.6401)\" id=\"g2920\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 C 1.753,4.841 4.799,9.185 8.878,12.484 8.281,13.302 7.789,14.195 7.416,15.153 2.44,16.666 -1.961,19.498 -5.375,23.247 -5.4,23.138 -5.432,23.032 -5.457,22.923 -6.101,20.042 -6.219,17.155 -5.898,14.339 -3.517,13.895 -1.713,11.808 -1.713,9.297 -1.713,7.808 -2.352,6.469 -3.365,5.53 -2.446,3.582 -1.316,1.726 0,0\" id=\"path2922\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(125.4619,663.7983)\" id=\"g2924\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -2.091,2.079 -3.846,4.467 -5.202,7.07 -0.255,-0.039 -0.515,-0.065 -0.78,-0.065 -2.836,0 -5.135,2.299 -5.135,5.134 0,2.032 1.184,3.784 2.897,4.616 -0.389,3.156 -0.257,6.432 0.477,9.714 0.21,0.938 0.466,1.854 0.761,2.749 -3.129,4.578 -4.962,10.113 -4.962,16.076 0,0.218 0.01,0.433 0.015,0.648 -5.288,-2.651 -9.253,-6.83 -9.253,-13.406 0,-14.549 8.688,-27.06 21.155,-32.654 C -0.018,-0.079 -0.01,-0.039 0,0\" id=\"path2926\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(155.8091,682.1509)\" id=\"g2928\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c -1.611,-4.582 -5.967,-7.873 -11.1,-7.873 -2.746,0 -5.265,0.947 -7.267,2.521 -4.127,-3.214 -7.242,-7.595 -9.144,-12.494 0.853,-0.919 1.765,-1.785 2.723,-2.599 2.888,-0.752 5.917,-1.155 9.042,-1.155 12.57,0 23.621,6.49 30.004,16.295 C 10.014,-2.365 5.09,-0.466 0,0\" id=\"path2930\" style=\"fill:#1287b1;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2932\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2936)\" id=\"g2934\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2940\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2942\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2948\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2944)\" id=\"g2950\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(156.2222,685.187)\" id=\"g2952\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M 0,0 10.879,2.595 -0.041,3.152 8.846,9.944 -1.238,6.329 5.615,15.826 -3.85,9.535 l 3.309,11.117 -6.5,-9.163 -0.148,11.579 -4.277,-10.314 -3.566,10.437 0.193,-12.295 -6.163,11.021 3.335,-11.702 -9.997,7.27 7.831,-9.84 -12.411,4.564 9.795,-7.247 -12.56,-0.386 12.842,-3.314 -12.853,-2.779 12.687,-0.92 -10.699,-6.851 11.017,3.994 -7.644,-9.681 9.659,7.79 -3.478,-12.991 7.457,10.572 -1.045,-12.486 4.233,11.319 3.603,-11.897 0.876,11.933 5.348,-10.181 -3.16,11.645 9.793,-7.586 -6.322,9.672 10.744,-4.186 -8.215,8.073 L 10.85,-4.164 0,0 z\" id=\"path2954\" style=\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2956\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2960)\" id=\"g2958\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2964\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2966\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2972\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2968)\" id=\"g2974\" style=\"opacity:0.35000604\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(40.4033,664.3701)\" id=\"g2976\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 33.74,33.739 60.687,44.155 85.143,48.91 3.236,0.629 3.848,7.7 3.848,7.7 0,0 0.453,-5.208 2.718,-5.887 2.264,-0.68 5.207,8.152 5.207,8.152 0,0 -2.717,-7.926 0,-8.379 2.718,-0.453 7.699,7.699 7.699,7.699 0,0 -2.037,-7.019 -0.678,-7.472 1.357,-0.453 8.15,10.189 8.15,10.189 0,0 -4.076,-7.019 -0.226,-7.699 3.851,-0.679 9.467,4.791 9.467,4.791 0,0 -4.416,-5.005 -2.448,-5.696 8.379,-2.945 15.159,7.945 15.159,7.945 0,0 -1.571,-4.775 -5.647,-9.983 8.83,-2.264 15.389,11.039 15.389,11.039 l -6.559,-13.303 c 3.397,-1.813 16.985,13.812 16.985,13.812 0,0 -7.02,-12.228 -11.096,-14.718 2.264,-1.812 10.416,5.434 10.416,5.434 0,0 -6.567,-8.151 -4.076,-8.604 3.623,-2.944 16.982,15.171 16.982,15.171 0,0 -5.207,-10.642 -12.906,-19.021 6.435,-3.219 22.418,17.436 22.418,17.436 0,0 -0.453,-6.567 -12.002,-16.983 8.605,1.132 19.701,17.436 19.701,17.436 0,0 -4.076,-12.228 -13.814,-20.832 8.449,0.879 21.964,21.738 21.964,21.738 0,0 -5.207,-14.492 -15.849,-22.871 11.775,-2.604 28.758,14.945 28.758,14.945 0,0 -6.68,-12.455 -15.399,-17.549 9.738,-3.736 23.098,11.662 23.098,11.662 0,0 -13.36,-20.607 -34.645,-19.701 -6.984,0.297 -28.109,21.188 -73.368,19.474 C 44.609,42.57 31.929,17.209 0,0\" id=\"path2978\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(41.7861,666.9326)\" id=\"g2980\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 33.74,33.739 60.686,44.154 85.142,48.91 3.237,0.629 3.849,7.699 3.849,7.699 0,0 0.452,-5.209 2.718,-5.887 2.264,-0.679 5.207,8.151 5.207,8.151 0,0 -2.717,-7.926 0,-8.378 2.718,-0.452 7.699,7.699 7.699,7.699 0,0 -2.037,-7.019 -0.68,-7.472 1.359,-0.453 8.152,10.19 8.152,10.19 0,0 -4.076,-7.02 -0.226,-7.699 3.849,-0.68 9.467,4.79 9.467,4.79 0,0 -4.416,-5.005 -2.448,-5.696 8.379,-2.944 15.157,7.945 15.157,7.945 0,0 -1.571,-4.775 -5.645,-9.983 8.83,-2.265 15.389,11.04 15.389,11.04 l -6.559,-13.305 c 3.397,-1.811 16.983,13.812 16.983,13.812 0,0 -7.018,-12.226 -11.094,-14.717 2.264,-1.812 10.416,5.434 10.416,5.434 0,0 -6.567,-8.152 -4.076,-8.604 3.623,-2.945 16.982,15.171 16.982,15.171 0,0 -5.209,-10.643 -12.906,-19.021 6.435,-3.22 22.418,17.436 22.418,17.436 0,0 -0.453,-6.568 -12.002,-16.984 8.605,1.133 19.701,17.437 19.701,17.437 0,0 -4.076,-12.228 -13.814,-20.833 8.449,0.879 21.964,21.738 21.964,21.738 0,0 -5.207,-14.492 -15.849,-22.87 11.775,-2.604 28.758,14.944 28.758,14.944 0,0 -6.68,-12.453 -15.399,-17.548 9.738,-3.736 23.098,11.662 23.098,11.662 0,0 -13.36,-20.607 -34.647,-19.701 -6.982,0.298 -28.107,21.189 -73.367,19.474 C 44.609,42.57 31.928,17.209 0,0\" id=\"path2982\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2984\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2988)\" id=\"g2986\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2992\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g2994\"\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g3000\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clipPath2996)\" id=\"g3002\" style=\"opacity:0.35000604\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(39.5195,660.6802)\" id=\"g3004\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 17.832,-8.945 34.137,1.358 54.686,-4.433 15.623,-4.404 34.645,-9.833 60.458,-6.096 25.814,3.735 47.893,14.944 58.424,34.985 3.283,8.943 16.642,-2.039 16.642,-2.039 0,0 -9.736,4.076 -9.509,2.151 0.226,-1.924 14.605,-8.604 14.605,-8.604 0,0 -13.021,4.076 -12.228,1.019 0.793,-3.057 16.302,-15.285 16.302,-15.285 0,0 -17.548,13.36 -19.019,11.549 -1.473,-1.812 7.472,-9.172 7.472,-9.172 0,0 -14.832,9.172 -20.041,6.467 -3.746,-1.943 15.399,-14.506 15.399,-14.506 0,0 -12.455,9.512 -15.399,7.021 -2.943,-2.492 14.04,-22.871 14.04,-22.871 0,0 -19.249,20.833 -21.172,19.814 -1.926,-1.019 5.32,-10.983 5.32,-10.983 0,0 -9.51,10.417 -12.113,8.605 -2.604,-1.812 13.586,-28.871 13.586,-28.871 0,0 -17.549,27.738 -24.795,23.098 11.379,-24.966 7.133,-28.533 7.133,-28.533 0,0 -1.452,25.47 -15.625,24.796 -7.133,-0.34 3.396,-19.021 3.396,-19.021 0,0 -9.691,17.062 -16.145,16.722 11.895,-22.511 7.655,-31.667 7.655,-31.667 0,0 1.967,19.226 -14.166,29.925 6.113,-5.433 -3.836,-29.925 -3.836,-29.925 0,0 8.752,36.091 -6.455,29.21 -2.403,-1.085 -0.17,-18.002 -0.17,-18.002 0,0 -3.057,19.362 -7.641,18.342 -2.673,-0.593 -16.984,-26.833 -16.984,-26.833 0,0 11.719,28.362 8.153,27.173 -2.598,-0.867 -7.473,-12.568 -7.473,-12.568 0,0 2.377,11.549 0,12.228 -2.377,0.68 -15.625,-12.228 -15.625,-12.228 0,0 9.851,11.549 8.152,13.927 -2.574,3.603 -5.591,3.772 -9.171,2.377 -5.209,-2.03 -12.227,-11.548 -12.227,-11.548 0,0 6.996,9.637 5.773,13.247 -1.963,5.8 -22.077,-11.209 -22.077,-11.209 0,0 11.888,11.209 9.171,13.587 -2.717,2.377 -17.471,1.642 -22.078,1.655 C 8.832,-6.454 4.124,-3.267 0,0\" id=\"path3006\" style=\"fill:#373535;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" transform=\"translate(38.8408,662.7183)\" id=\"g3008\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m 0,0 c 17.832,-8.945 34.136,1.358 54.685,-4.434 15.623,-4.402 34.646,-9.832 60.46,-6.095 25.814,3.736 47.891,14.945 58.422,34.984 3.283,8.944 16.642,-2.037 16.642,-2.037 0,0 -9.736,4.075 -9.509,2.15 0.226,-1.924 14.605,-8.604 14.605,-8.604 0,0 -13.021,4.075 -12.228,1.018 0.793,-3.056 16.304,-15.284 16.304,-15.284 0,0 -17.55,13.361 -19.021,11.548 -1.471,-1.811 7.473,-9.17 7.473,-9.17 0,0 -14.833,9.17 -20.041,6.467 -3.747,-1.944 15.398,-14.506 15.398,-14.506 0,0 -12.455,9.511 -15.398,7.02 -2.944,-2.492 14.041,-22.871 14.041,-22.871 0,0 -19.25,20.833 -21.174,19.814 -1.924,-1.02 5.322,-10.982 5.322,-10.982 0,0 -9.512,10.416 -12.115,8.604 -2.604,-1.811 13.586,-28.871 13.586,-28.871 0,0 -17.549,27.739 -24.795,23.097 11.379,-24.965 7.133,-28.532 7.133,-28.532 0,0 -1.452,25.47 -15.625,24.795 -7.133,-0.34 3.396,-19.02 3.396,-19.02 0,0 -9.691,17.063 -16.144,16.723 11.896,-22.512 7.654,-31.668 7.654,-31.668 0,0 1.967,19.227 -14.166,29.926 6.113,-5.434 -3.836,-29.926 -3.836,-29.926 0,0 8.754,36.091 -6.453,29.21 -2.403,-1.086 -0.17,-18.002 -0.17,-18.002 0,0 -3.059,19.361 -7.642,18.342 -2.674,-0.593 -16.985,-26.833 -16.985,-26.833 0,0 11.719,28.362 8.153,27.172 -2.598,-0.865 -7.473,-12.566 -7.473,-12.566 0,0 2.378,11.548 0,12.227 -2.377,0.679 -15.624,-12.227 -15.624,-12.227 0,0 9.851,11.548 8.151,13.926 -2.574,3.603 -5.591,3.771 -9.17,2.376 -5.21,-2.029 -12.228,-11.547 -12.228,-11.547 0,0 6.996,9.638 5.774,13.247 -1.964,5.799 -22.077,-11.209 -22.077,-11.209 0,0 11.888,11.209 9.17,13.586 C 41.778,-5.774 27.024,-6.51 22.417,-6.496 8.831,-6.453 4.124,-3.267 0,0\" id=\"path3010\" style=\"fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/svg\u003e" + }, + "model": { + "version": "0.53.3" + }, + "name": "cass-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + } \ No newline at end of file diff --git a/server/meshmodel/datadog-operator/0.1.2/v1.0.0/components/DatadogAgent.json b/server/meshmodel/datadog-operator/0.1.2/v1.0.0/components/DatadogAgent.json index 348f8d32135..106ea0f6302 100644 --- a/server/meshmodel/datadog-operator/0.1.2/v1.0.0/components/DatadogAgent.json +++ b/server/meshmodel/datadog-operator/0.1.2/v1.0.0/components/DatadogAgent.json @@ -177,11 +177,11 @@ "schemaVersion": "components.meshery.io/v1beta1", "status": "ignored", "styles": { - "primaryColor": "#632CA6", + "primaryColor": "#00B39F", "secondaryColor": "#00D3A9", - "shape": "rectangle", - "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\n\tL670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\n\tc6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\n\tL0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\n\tc18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\n\ts-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\n\tc-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\n\tc6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\n\tc10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\n\tc-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\n\ts11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\n\tc-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\n\tc17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\n\tc11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\n\tc9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\n\tc32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\n\tc-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\n\tc-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\n\tc2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\n\tc2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\n\tc-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\n\tc-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\n\tc19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\n\tc-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\n\tc16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\n\tc-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\n\tc8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\n\tc-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\n\tc-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\n\tc18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\n\tc5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\n\tc5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\n\tC401.49,268.05,386.84,271.12,397.85,260.65\"/\u003e\n\u003c/svg\u003e", - "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\n\tc1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\n\tc-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\n\tc12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\n\tc-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\n\tc0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\n\tc-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\n\tc1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\n\tc-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\n\tc19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\n\tc6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\n\tc-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\n\tc1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\n\tc5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\n\tC519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\n\tc6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\n\tc2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\n\tc-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\n\ts12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\n\tc-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\n\tc2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\n\tc5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\n\tc15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\n\tc-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\n\tc4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\n\tc6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\n\tc47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\n\tc-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\n\tc15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\n\tL687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\n\tc-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"/\u003e\n\u003c/svg\u003e\n" + "shape": "round-rectangle", + "svgColor": "", + "svgWhite": "" }, "version": "v1.0.0" } \ No newline at end of file diff --git a/server/meshmodel/datadog-operator/0.1.2/v1.0.0/components/DatadogMetric.json b/server/meshmodel/datadog-operator/0.1.2/v1.0.0/components/DatadogMetric.json index 79625fcec68..035af8c8b53 100644 --- a/server/meshmodel/datadog-operator/0.1.2/v1.0.0/components/DatadogMetric.json +++ b/server/meshmodel/datadog-operator/0.1.2/v1.0.0/components/DatadogMetric.json @@ -177,11 +177,11 @@ "schemaVersion": "components.meshery.io/v1beta1", "status": "ignored", "styles": { - "primaryColor": "#632CA6", + "primaryColor": "#00B39F", "secondaryColor": "#00D3A9", - "shape": "rectangle", - "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\n\tL670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\n\tc6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\n\tL0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\n\tc18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\n\ts-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\n\tc-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\n\tc6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\n\tc10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\n\tc-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\n\ts11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\n\tc-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\n\tc17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\n\tc11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\n\tc9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\n\tc32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\n\tc-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\n\tc-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\n\tc2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\n\tc2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\n\tc-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\n\tc-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\n\tc19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\n\tc-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\n\tc16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\n\tc-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\n\tc8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\n\tc-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\n\tc-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\n\tc18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\n\tc5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\n\tc5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\n\tC401.49,268.05,386.84,271.12,397.85,260.65\"/\u003e\n\u003c/svg\u003e", - "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\n\tc1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\n\tc-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\n\tc12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\n\tc-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\n\tc0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\n\tc-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\n\tc1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\n\tc-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\n\tc19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\n\tc6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\n\tc-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\n\tc1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\n\tc5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\n\tC519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\n\tc6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\n\tc2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\n\tc-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\n\ts12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\n\tc-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\n\tc2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\n\tc5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\n\tc15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\n\tc-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\n\tc4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\n\tc6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\n\tc47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\n\tc-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\n\tc15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\n\tL687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\n\tc-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"/\u003e\n\u003c/svg\u003e\n" + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003emeshery-logo-light\u003c/title\u003e\u003cpolygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/\u003e\u003cpolygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/\u003e\u003cpolygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/\u003e\u003cpath d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/\u003e\u003cpath d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/\u003e\u003cpolygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/\u003e\u003cpolygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/\u003e\u003cpath d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/\u003e\u003cpath d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/\u003e\u003cpolygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" }, "version": "v1.0.0" } \ No newline at end of file diff --git a/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogAgent.json b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogAgent.json index 0c789bbbe16..8e6df650a27 100644 --- a/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogAgent.json +++ b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogAgent.json @@ -185,11 +185,11 @@ "schemaVersion": "components.meshery.io/v1beta1", "status": "enabled", "styles": { - "primaryColor": "#632CA6", + "primaryColor": "#00B39F", "secondaryColor": "#00D3A9", - "shape": "rectangle", - "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\n\tL670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\n\tc6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\n\tL0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\n\tc18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\n\ts-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\n\tc-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\n\tc6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\n\tc10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\n\tc-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\n\ts11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\n\tc-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\n\tc17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\n\tc11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\n\tc9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\n\tc32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\n\tc-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\n\tc-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\n\tc2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\n\tc2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\n\tc-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\n\tc-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\n\tc19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\n\tc-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\n\tc16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\n\tc-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\n\tc8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\n\tc-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\n\tc-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\n\tc18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\n\tc5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\n\tc5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\n\tC401.49,268.05,386.84,271.12,397.85,260.65\"/\u003e\n\u003c/svg\u003e", - "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\n\tc1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\n\tc-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\n\tc12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\n\tc-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\n\tc0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\n\tc-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\n\tc1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\n\tc-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\n\tc19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\n\tc6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\n\tc-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\n\tc1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\n\tc5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\n\tC519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\n\tc6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\n\tc2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\n\tc-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\n\ts12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\n\tc-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\n\tc2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\n\tc5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\n\tc15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\n\tc-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\n\tc4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\n\tc6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\n\tc47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\n\tc-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\n\tc15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\n\tL687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\n\tc-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"/\u003e\n\u003c/svg\u003e\n" + "shape": "round-rectangle", + "svgColor": "", + "svgWhite": "" }, "version": "v1.0.0" } \ No newline at end of file diff --git a/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogMetric.json b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogMetric.json index 19782300afc..71e45138b67 100644 --- a/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogMetric.json +++ b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogMetric.json @@ -185,11 +185,11 @@ "schemaVersion": "components.meshery.io/v1beta1", "status": "enabled", "styles": { - "primaryColor": "#632CA6", + "primaryColor": "#00B39F", "secondaryColor": "#00D3A9", - "shape": "rectangle", - "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\n\tL670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\n\tc6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\n\tL0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\n\tc18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\n\ts-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\n\tc-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\n\tc6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\n\tc10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\n\tc-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\n\ts11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\n\tc-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\n\tc17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\n\tc11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\n\tc9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\n\tc32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\n\tc-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\n\tc-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\n\tc2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\n\tc2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\n\tc-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\n\tc-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\n\tc19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\n\tc-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\n\tc16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\n\tc-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\n\tc8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\n\tc-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\n\tc-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\n\tc18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\n\tc5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\n\tc5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\n\tC401.49,268.05,386.84,271.12,397.85,260.65\"/\u003e\n\u003c/svg\u003e", - "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\n\tc1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\n\tc-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\n\tc12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\n\tc-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\n\tc0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\n\tc-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\n\tc1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\n\tc-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\n\tc19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\n\tc6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\n\tc-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\n\tc1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\n\tc5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\n\tC519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\n\tc6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\n\tc2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\n\tc-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\n\ts12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\n\tc-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\n\tc2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\n\tc5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\n\tc15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\n\tc-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\n\tc4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\n\tc6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\n\tc47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\n\tc-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\n\tc15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\n\tL687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\n\tc-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"/\u003e\n\u003c/svg\u003e\n" + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003emeshery-logo-light\u003c/title\u003e\u003cpolygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/\u003e\u003cpolygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/\u003e\u003cpolygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/\u003e\u003cpath d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/\u003e\u003cpath d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/\u003e\u003cpolygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/\u003e\u003cpolygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/\u003e\u003cpath d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/\u003e\u003cpath d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/\u003e\u003cpolygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" }, "version": "v1.0.0" } \ No newline at end of file diff --git a/server/meshmodel/datadog-operator/datadog-3.70.3/v1.0.0/components/DatadogAgent.json b/server/meshmodel/datadog-operator/datadog-3.70.3/v1.0.0/components/DatadogAgent.json index ed56f7eb07b..333eb257a7b 100644 --- a/server/meshmodel/datadog-operator/datadog-3.70.3/v1.0.0/components/DatadogAgent.json +++ b/server/meshmodel/datadog-operator/datadog-3.70.3/v1.0.0/components/DatadogAgent.json @@ -185,11 +185,11 @@ "schemaVersion": "components.meshery.io/v1beta1", "status": "enabled", "styles": { - "primaryColor": "#632CA6", + "primaryColor": "#00B39F", "secondaryColor": "#00D3A9", - "shape": "rectangle", - "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\n\tL670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\n\tc6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\n\tL0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\n\tc18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\n\ts-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\n\tc-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\n\tc6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\n\tc10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\n\tc-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\n\ts11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\n\tc-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\n\tc17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\n\tc11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\n\tc9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\n\tc32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\n\tc-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\n\tc-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\n\tc2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\n\tc2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\n\tc-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\n\tc-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\n\tc19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\n\tc-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\n\tc16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\n\tc-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\n\tc8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\n\tc-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\n\tc-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\n\tc18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\n\tc5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\n\tc5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\n\tC401.49,268.05,386.84,271.12,397.85,260.65\"/\u003e\n\u003c/svg\u003e", - "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\n\tc1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\n\tc-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\n\tc12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\n\tc-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\n\tc0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\n\tc-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\n\tc1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\n\tc-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\n\tc19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\n\tc6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\n\tc-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\n\tc1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\n\tc5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\n\tC519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\n\tc6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\n\tc2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\n\tc-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\n\ts12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\n\tc-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\n\tc2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\n\tc5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\n\tc15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\n\tc-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\n\tc4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\n\tc6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\n\tc47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\n\tc-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\n\tc15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\n\tL687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\n\tc-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"/\u003e\n\u003c/svg\u003e\n" + "shape": "round-rectangle", + "svgColor": "", + "svgWhite": "" }, "version": "v1.0.0" } \ No newline at end of file diff --git a/server/meshmodel/datadog-operator/datadog-3.70.3/v1.0.0/components/DatadogMetric.json b/server/meshmodel/datadog-operator/datadog-3.70.3/v1.0.0/components/DatadogMetric.json index 792b65a3c5f..48ead0b9af1 100644 --- a/server/meshmodel/datadog-operator/datadog-3.70.3/v1.0.0/components/DatadogMetric.json +++ b/server/meshmodel/datadog-operator/datadog-3.70.3/v1.0.0/components/DatadogMetric.json @@ -185,11 +185,11 @@ "schemaVersion": "components.meshery.io/v1beta1", "status": "enabled", "styles": { - "primaryColor": "#632CA6", + "primaryColor": "#00B39F", "secondaryColor": "#00D3A9", - "shape": "rectangle", - "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\n\tL670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\n\tc6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\n\tL0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\n\tc18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\n\ts-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\n\tc-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\n\tc6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\n\tc10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\n\tc-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\n\ts11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\n\tc-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\n\tc17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\n\tc11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\n\tc9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\n\tc32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\n\tc-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\n\tc-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\n\tc2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\n\tc2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\n\tc-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\n\tc-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\n\tc19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\n\tc-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\n\tc16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\n\tc-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\n\tc8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\n\tc-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\n\tc-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\n\tc18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\n\tc5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\n\tc5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\n\tC401.49,268.05,386.84,271.12,397.85,260.65\"/\u003e\n\u003c/svg\u003e", - "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\n\tc1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\n\tc-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\n\tc12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\n\tc-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\n\tc0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\n\tc-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\n\tc1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\n\tc-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\n\tc19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\n\tc6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\n\tc-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\n\tc1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\n\tc5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\n\tC519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\n\tc6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\n\tc2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\n\tc-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\n\ts12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\n\tc-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\n\tc2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\n\tc5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\n\tc15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\n\tc-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\n\tc4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\n\tc6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\n\tc47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\n\tc-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\n\tc15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\n\tL687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\n\tc-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"/\u003e\n\u003c/svg\u003e\n" + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003emeshery-logo-light\u003c/title\u003e\u003cpolygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/\u003e\u003cpolygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/\u003e\u003cpolygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/\u003e\u003cpath d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/\u003e\u003cpath d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/\u003e\u003cpolygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/\u003e\u003cpolygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/\u003e\u003cpath d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/\u003e\u003cpath d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/\u003e\u003cpolygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" }, "version": "v1.0.0" } \ No newline at end of file diff --git a/server/meshmodel/datadog-operator/datadog-3.70.4/v1.0.0/components/DatadogAgent.json b/server/meshmodel/datadog-operator/datadog-3.70.4/v1.0.0/components/DatadogAgent.json index acbfd816196..5f4369ac94b 100644 --- a/server/meshmodel/datadog-operator/datadog-3.70.4/v1.0.0/components/DatadogAgent.json +++ b/server/meshmodel/datadog-operator/datadog-3.70.4/v1.0.0/components/DatadogAgent.json @@ -185,11 +185,11 @@ "schemaVersion": "components.meshery.io/v1beta1", "status": "enabled", "styles": { - "primaryColor": "#632CA6", + "primaryColor": "#00B39F", "secondaryColor": "#00D3A9", - "shape": "rectangle", - "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\n\tL670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\n\tc6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\n\tL0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\n\tc18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\n\ts-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\n\tc-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\n\tc6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\n\tc10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\n\tc-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\n\ts11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\n\tc-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\n\tc17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\n\tc11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\n\tc9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\n\tc32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\n\tc-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\n\tc-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\n\tc2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\n\tc2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\n\tc-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\n\tc-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\n\tc19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\n\tc-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\n\tc16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\n\tc-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\n\tc8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\n\tc-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\n\tc-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\n\tc18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\n\tc5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\n\tc5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\n\tC401.49,268.05,386.84,271.12,397.85,260.65\"/\u003e\n\u003c/svg\u003e", - "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\n\tc1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\n\tc-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\n\tc12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\n\tc-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\n\tc0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\n\tc-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\n\tc1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\n\tc-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\n\tc19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\n\tc6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\n\tc-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\n\tc1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\n\tc5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\n\tC519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\n\tc6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\n\tc2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\n\tc-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\n\ts12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\n\tc-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\n\tc2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\n\tc5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\n\tc15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\n\tc-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\n\tc4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\n\tc6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\n\tc47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\n\tc-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\n\tc15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\n\tL687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\n\tc-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"/\u003e\n\u003c/svg\u003e\n" + "shape": "round-rectangle", + "svgColor": "", + "svgWhite": "" }, "version": "v1.0.0" } \ No newline at end of file diff --git a/server/meshmodel/datadog-operator/datadog-3.70.4/v1.0.0/components/DatadogMetric.json b/server/meshmodel/datadog-operator/datadog-3.70.4/v1.0.0/components/DatadogMetric.json index bfe4cc52f5e..75da0f32265 100644 --- a/server/meshmodel/datadog-operator/datadog-3.70.4/v1.0.0/components/DatadogMetric.json +++ b/server/meshmodel/datadog-operator/datadog-3.70.4/v1.0.0/components/DatadogMetric.json @@ -185,11 +185,11 @@ "schemaVersion": "components.meshery.io/v1beta1", "status": "enabled", "styles": { - "primaryColor": "#632CA6", + "primaryColor": "#00B39F", "secondaryColor": "#00D3A9", - "shape": "rectangle", - "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\n\tL670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\n\tc6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\n\tL0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\n\tc18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\n\ts-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\n\tc-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\n\tc6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\n\tc10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\n\tc-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\n\ts11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\n\tc-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\n\tc17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\n\tc11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\n\tc9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\n\tc32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\n\tc-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\n\tc-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\n\tc2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\n\tc2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\n\tc-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\n\tc-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\n\tc19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\n\tc-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\n\tc16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\n\tc-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\n\tc8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\n\tc-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\n\tc-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\n\tc18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\n\tc5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\n\tc5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\n\tC401.49,268.05,386.84,271.12,397.85,260.65\"/\u003e\n\u003c/svg\u003e", - "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\n\tc1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\n\tc-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\n\tc12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\n\tc-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\n\tc0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\n\tc-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\n\tc1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\n\tc-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\n\tc19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\n\tc6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\n\tc-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\n\tc1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\n\tc5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\n\tC519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\n\tc6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\n\tc2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\n\tc-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\n\ts12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\n\tc-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\n\tc2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\n\tc5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\n\tc15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\n\tc-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\n\tc4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\n\tc6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\n\tc47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\n\tc-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\n\tc15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\n\tL687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\n\tc-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"/\u003e\n\u003c/svg\u003e\n" + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003emeshery-logo-light\u003c/title\u003e\u003cpolygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/\u003e\u003cpolygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/\u003e\u003cpolygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/\u003e\u003cpath d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/\u003e\u003cpath d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/\u003e\u003cpolygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/\u003e\u003cpolygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/\u003e\u003cpath d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/\u003e\u003cpath d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/\u003e\u003cpolygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" }, "version": "v1.0.0" } \ No newline at end of file diff --git a/server/meshmodel/datadog-operator/datadog-3.70.5/v1.0.0/components/DatadogAgent.json b/server/meshmodel/datadog-operator/datadog-3.70.5/v1.0.0/components/DatadogAgent.json index a3c74b62f23..cf04da6bccd 100644 --- a/server/meshmodel/datadog-operator/datadog-3.70.5/v1.0.0/components/DatadogAgent.json +++ b/server/meshmodel/datadog-operator/datadog-3.70.5/v1.0.0/components/DatadogAgent.json @@ -185,11 +185,11 @@ "schemaVersion": "components.meshery.io/v1beta1", "status": "enabled", "styles": { - "primaryColor": "#632CA6", + "primaryColor": "#00B39F", "secondaryColor": "#00D3A9", - "shape": "rectangle", - "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\n\tL670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\n\tc6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\n\tL0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\n\tc18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\n\ts-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\n\tc-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\n\tc6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\n\tc10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\n\tc-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\n\ts11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\n\tc-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\n\tc17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\n\tc11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\n\tc9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\n\tc32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\n\tc-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\n\tc-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\n\tc2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\n\tc2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\n\tc-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\n\tc-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\n\tc19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\n\tc-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\n\tc16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\n\tc-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\n\tc8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\n\tc-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\n\tc-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\n\tc18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\n\tc5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\n\tc5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\n\tC401.49,268.05,386.84,271.12,397.85,260.65\"/\u003e\n\u003c/svg\u003e", - "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\n\tc1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\n\tc-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\n\tc12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\n\tc-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\n\tc0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\n\tc-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\n\tc1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\n\tc-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\n\tc19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\n\tc6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\n\tc-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\n\tc1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\n\tc5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\n\tC519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\n\tc6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\n\tc2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\n\tc-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\n\ts12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\n\tc-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\n\tc2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\n\tc5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\n\tc15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\n\tc-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\n\tc4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\n\tc6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\n\tc47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\n\tc-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\n\tc15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\n\tL687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\n\tc-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"/\u003e\n\u003c/svg\u003e\n" + "shape": "round-rectangle", + "svgColor": "", + "svgWhite": "" }, "version": "v1.0.0" } \ No newline at end of file diff --git a/server/meshmodel/datadog-operator/datadog-3.70.5/v1.0.0/components/DatadogMetric.json b/server/meshmodel/datadog-operator/datadog-3.70.5/v1.0.0/components/DatadogMetric.json index d23ba43923a..398ff25c728 100644 --- a/server/meshmodel/datadog-operator/datadog-3.70.5/v1.0.0/components/DatadogMetric.json +++ b/server/meshmodel/datadog-operator/datadog-3.70.5/v1.0.0/components/DatadogMetric.json @@ -185,11 +185,11 @@ "schemaVersion": "components.meshery.io/v1beta1", "status": "enabled", "styles": { - "primaryColor": "#632CA6", + "primaryColor": "#00B39F", "secondaryColor": "#00D3A9", - "shape": "rectangle", - "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\n\tL670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\n\tc6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\n\tL0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\n\tc18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\n\ts-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\n\tc-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\n\tc6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\n\tc10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\n\tc-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\n\ts11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\n\tc-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\n\tc17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\n\tc11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\n\tc9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\n\tc32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\n\tc-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\n\tc-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\n\tc2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\n\tc2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\n\tc-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\n\tc-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\n\tc19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\n\tc-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\n\tc16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\n\tc-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\n\tc8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\n\tc-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\n\tc-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\n\tc18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\n\tc5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\n\tc5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\n\tC401.49,268.05,386.84,271.12,397.85,260.65\"/\u003e\n\u003c/svg\u003e", - "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\n\tc1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\n\tc-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\n\tc12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\n\tc-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\n\tc0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\n\tc-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\n\tc1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\n\tc-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\n\tc19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\n\tc6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\n\tc-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\n\tc1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\n\tc5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\n\tC519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\n\tc6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\n\tc2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\n\tc-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\n\ts12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\n\tc-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\n\tc2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\n\tc5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\n\tc15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\n\tc-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\n\tc4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\n\tc6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\n\tc47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\n\tc-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\n\tc15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\n\tL687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\n\tc-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"/\u003e\n\u003c/svg\u003e\n" + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003emeshery-logo-light\u003c/title\u003e\u003cpolygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/\u003e\u003cpolygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/\u003e\u003cpolygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/\u003e\u003cpath d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/\u003e\u003cpath d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/\u003e\u003cpolygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/\u003e\u003cpolygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/\u003e\u003cpath d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/\u003e\u003cpath d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/\u003e\u003cpolygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" }, "version": "v1.0.0" } \ No newline at end of file diff --git a/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/Alertmanager.json b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/Alertmanager.json new file mode 100644 index 00000000000..5860c295d0d --- /dev/null +++ b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/Alertmanager.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "Alertmanager", + "schema": "{\n \"description\": \"Alertmanager describes an Alertmanager cluster.\",\n \"properties\": {\n \"spec\": {\n \"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\",\n \"properties\": {\n \"additionalPeers\": {\n \"description\": \"AdditionalPeers allows injecting a set of additional Alertmanagers to peer with to form a highly available cluster.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"affinity\": {\n \"description\": \"If specified, the pod's scheduling constraints.\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"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).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"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 \\u003ctopologyKey\\u003e matches that of any node on which a pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"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 \\u003ctopologyKey\\u003e matches that of any node on which a pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"alertmanagerConfigMatcherStrategy\": {\n \"description\": \"The AlertmanagerConfigMatcherStrategy defines how AlertmanagerConfig objects match the alerts. In the future more options may be added.\",\n \"properties\": {\n \"type\": {\n \"default\": \"OnNamespace\",\n \"description\": \"If set to `OnNamespace`, the operator injects a label matcher matching the namespace of the AlertmanagerConfig object for all its routes and inhibition rules. `None` will not add any additional matchers other than the ones specified in the AlertmanagerConfig. Default is `OnNamespace`.\",\n \"enum\": [\n \"OnNamespace\",\n \"None\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"alertmanagerConfigNamespaceSelector\": {\n \"description\": \"Namespaces to be selected for AlertmanagerConfig discovery. If nil, only check own namespace.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"alertmanagerConfigSelector\": {\n \"description\": \"AlertmanagerConfigs to be selected for to merge and configure Alertmanager with.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"alertmanagerConfiguration\": {\n \"description\": \"EXPERIMENTAL: alertmanagerConfiguration specifies the configuration of Alertmanager. If defined, it takes precedence over the `configSecret` field. This field may change in future releases.\",\n \"properties\": {\n \"global\": {\n \"description\": \"Defines the global parameters of the Alertmanager configuration.\",\n \"properties\": {\n \"httpConfig\": {\n \"description\": \"HTTP client configuration.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenSecret\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"followRedirects\": {\n \"description\": \"FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\",\n \"type\": \"boolean\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 client credentials used to fetch a token for the targets.\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"proxyURL\": {\n \"description\": \"Optional proxy URL.\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration for the client.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"opsGenieApiKey\": {\n \"description\": \"The default OpsGenie API Key.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"opsGenieApiUrl\": {\n \"description\": \"The default OpsGenie API URL.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"pagerdutyUrl\": {\n \"description\": \"The default Pagerduty URL.\",\n \"type\": \"string\"\n },\n \"resolveTimeout\": {\n \"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.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"slackApiUrl\": {\n \"description\": \"The default Slack API URL.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"smtp\": {\n \"description\": \"Configures global SMTP parameters.\",\n \"properties\": {\n \"authIdentity\": {\n \"description\": \"SMTP Auth using PLAIN\",\n \"type\": \"string\"\n },\n \"authPassword\": {\n \"description\": \"SMTP Auth using LOGIN and PLAIN.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"authSecret\": {\n \"description\": \"SMTP Auth using CRAM-MD5.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"authUsername\": {\n \"description\": \"SMTP Auth using CRAM-MD5, LOGIN and PLAIN. If empty, Alertmanager doesn't authenticate to the SMTP server.\",\n \"type\": \"string\"\n },\n \"from\": {\n \"description\": \"The default SMTP From header field.\",\n \"type\": \"string\"\n },\n \"hello\": {\n \"description\": \"The default hostname to identify to the SMTP server.\",\n \"type\": \"string\"\n },\n \"requireTLS\": {\n \"description\": \"The default SMTP TLS requirement. Note that Go does not support unencrypted connections to remote SMTP endpoints.\",\n \"type\": \"boolean\"\n },\n \"smartHost\": {\n \"description\": \"The default SMTP smarthost used for sending emails.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Defines the host's address, it can be a DNS name or a literal IP address.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Defines the host's port, it can be a literal port number or a port name.\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"host\",\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"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.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"templates\": {\n \"description\": \"Custom notification templates.\",\n \"items\": {\n \"description\": \"SecretOrConfigMap allows to specify data as a Secret or ConfigMap. Fields are mutually exclusive.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"automountServiceAccountToken\": {\n \"description\": \"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted in the pod. If the service account has `automountServiceAccountToken: true`, set the field to `false` to opt out of automounting API credentials.\",\n \"type\": \"boolean\"\n },\n \"baseImage\": {\n \"description\": \"Base image that is used to deploy pods, without tag. Deprecated: use 'image' instead\",\n \"type\": \"string\"\n },\n \"clusterAdvertiseAddress\": {\n \"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\",\n \"type\": \"string\"\n },\n \"clusterGossipInterval\": {\n \"description\": \"Interval between gossip attempts.\",\n \"pattern\": \"^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"clusterPeerTimeout\": {\n \"description\": \"Timeout for cluster peering.\",\n \"pattern\": \"^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"clusterPushpullInterval\": {\n \"description\": \"Interval between pushpull attempts.\",\n \"pattern\": \"^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"configMaps\": {\n \"description\": \"ConfigMaps is a list of ConfigMaps in the same namespace as the Alertmanager object, which shall be mounted into the Alertmanager Pods. Each ConfigMap is added to the StatefulSet definition as a volume named `configmap-\\u003cconfigmap-name\\u003e`. The ConfigMaps are mounted into `/etc/alertmanager/configmaps/\\u003cconfigmap-name\\u003e` in the 'alertmanager' container.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"configSecret\": {\n \"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-\\u003calertmanager-name\\u003e`. \\n The Alertmanager configuration should be available under the `alertmanager.yaml` key. Additional keys from the original secret are copied to the generated secret and mounted into the `/etc/alertmanager/config` directory in the `alertmanager` container. \\n If either the secret or the `alertmanager.yaml` key is missing, the operator provisions a minimal Alertmanager configuration with one empty receiver (effectively dropping alert notifications).\",\n \"type\": \"string\"\n },\n \"containers\": {\n \"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.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container. Cannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"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 \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"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.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"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.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"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\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events. Cannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"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.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"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.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"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.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host. If specified, this must be a valid port number, 0 \\u003c x \\u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod. This field may only be set for init containers, and the only allowed value is \\\"Always\\\". For non-init containers or when this field is not specified, the restart behavior is defined by the Pod's restart policy and the container type. Setting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect: this init container will be continually restarted on exit until all regular containers have terminated. Once all regular containers have completed, all init containers with restartPolicy \\\"Always\\\" will be shut down. This lifecycle differs from normal init containers and is often referred to as a \\\"sidecar\\\" container. Although this init container still starts in the init container sequence, it does not wait for the container to complete before proceeding to the next init container. Instead, the next init container starts immediately after this init container is started, or after any startupProbe has successfully completed.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"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/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"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.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"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.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are provided at both the pod \\u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"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 be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"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.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. 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.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Cannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"externalUrl\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"forceEnableClusterMode\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"hostAliases\": {\n \"description\": \"Pods' hostAliases configuration\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"hostnames\",\n \"ip\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"ip\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"image\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy for the 'alertmanager', 'init-config-reloader' and 'config-reloader' containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details.\",\n \"enum\": [\n \"\",\n \"Always\",\n \"Never\",\n \"IfNotPresent\"\n ],\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"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\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"initContainers\": {\n \"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/ 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.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container. Cannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"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 \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"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.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"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.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"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\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events. Cannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"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.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"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.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"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.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host. If specified, this must be a valid port number, 0 \\u003c x \\u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod. This field may only be set for init containers, and the only allowed value is \\\"Always\\\". For non-init containers or when this field is not specified, the restart behavior is defined by the Pod's restart policy and the container type. Setting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect: this init container will be continually restarted on exit until all regular containers have terminated. Once all regular containers have completed, all init containers with restartPolicy \\\"Always\\\" will be shut down. This lifecycle differs from normal init containers and is often referred to as a \\\"sidecar\\\" container. Although this init container still starts in the init container sequence, it does not wait for the container to complete before proceeding to the next init container. Instead, the next init container starts immediately after this init container is started, or after any startupProbe has successfully completed.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"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/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"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.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"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.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are provided at both the pod \\u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"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 be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"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.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. 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.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Cannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"listenLocal\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"logFormat\": {\n \"description\": \"Log format for Alertmanager to be configured with.\",\n \"enum\": [\n \"\",\n \"logfmt\",\n \"json\"\n ],\n \"type\": \"string\"\n },\n \"logLevel\": {\n \"description\": \"Log level for Alertmanager to be configured with.\",\n \"enum\": [\n \"\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ],\n \"type\": \"string\"\n },\n \"minReadySeconds\": {\n \"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 from kubernetes 1.22 until 1.24 which requires enabling the StatefulSetMinReadySeconds feature gate.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Define which Nodes the Pods are scheduled on.\",\n \"type\": \"object\"\n },\n \"paused\": {\n \"description\": \"If set to true all actions on the underlying managed objects are not goint to be performed, except for delete actions.\",\n \"type\": \"boolean\"\n },\n \"podMetadata\": {\n \"description\": \"PodMetadata configures labels and annotations which are propagated to the Alertmanager pods. \\n The following items are reserved and cannot be overridden: * \\\"alertmanager\\\" label, set to the name of the Alertmanager instance. * \\\"app.kubernetes.io/instance\\\" label, set to the name of the Alertmanager instance. * \\\"app.kubernetes.io/managed-by\\\" label, set to \\\"prometheus-operator\\\". * \\\"app.kubernetes.io/name\\\" label, set to \\\"alertmanager\\\". * \\\"app.kubernetes.io/version\\\" label, set to the Alertmanager version. * \\\"kubectl.kubernetes.io/default-container\\\" annotation, set to \\\"alertmanager\\\".\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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\",\n \"type\": \"object\"\n },\n \"name\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"portName\": {\n \"default\": \"web\",\n \"description\": \"Port name used for the pods and governing service. Defaults to `web`.\",\n \"type\": \"string\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class assigned to the Pods\",\n \"type\": \"string\"\n },\n \"replicas\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"resources\": {\n \"description\": \"Define resources requests and limits for single Pods.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"retention\": {\n \"default\": \"120h\",\n \"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).\",\n \"pattern\": \"^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"routePrefix\": {\n \"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`.\",\n \"type\": \"string\"\n },\n \"secrets\": {\n \"description\": \"Secrets is a list of Secrets in the same namespace as the Alertmanager object, which shall be mounted into the Alertmanager Pods. Each Secret is added to the StatefulSet definition as a volume named `secret-\\u003csecret-name\\u003e`. The Secrets are mounted into `/etc/alertmanager/secrets/\\u003csecret-name\\u003e` in the 'alertmanager' container.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings. This defaults to the default PodSecurityContext.\",\n \"properties\": {\n \"fsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"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.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"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.\",\n \"properties\": {\n \"localhostProfile\": {\n \"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 be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"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.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"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.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. 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.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run the Prometheus Pods.\",\n \"type\": \"string\"\n },\n \"sha\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"storage\": {\n \"description\": \"Storage is the definition of how storage will be used by the Alertmanager instances.\",\n \"properties\": {\n \"disableMountSubPath\": {\n \"description\": \"*Deprecated: subPath usage will be removed in a future release.*\",\n \"type\": \"boolean\"\n },\n \"emptyDir\": {\n \"description\": \"EmptyDirVolumeSource to be used by the StatefulSet. If specified, it takes precedence over `ephemeral` and `volumeClaimTemplate`. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir\",\n \"properties\": {\n \"medium\": {\n \"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\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"EphemeralVolumeSource to be used by the StatefulSet. This is a beta field in k8s 1.21 and GA in 1.15. 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\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where `\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"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.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"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.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"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. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any 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, when namespace isn't specified in dataSourceRef, 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. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three 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. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"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\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"Defines the PVC spec to be used by the Prometheus StatefulSets. The easiest way to use a volume that cannot be automatically provisioned is to use a label selector alongside manually created PersistentVolumes.\",\n \"properties\": {\n \"apiVersion\": {\n \"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\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"EmbeddedMetadata contains metadata relevant to an EmbeddedResource.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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\",\n \"type\": \"object\"\n },\n \"name\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"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. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any 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, when namespace isn't specified in dataSourceRef, 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. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three 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. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"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\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"status\": {\n \"description\": \"*Deprecated: this field is never set.*\",\n \"properties\": {\n \"accessModes\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allocatedResourceStatuses\": {\n \"additionalProperties\": {\n \"description\": \"When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource that it does not recognizes, then it should ignore that update and let other controllers handle it.\",\n \"type\": \"string\"\n },\n \"description\": \"allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \\n ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeInProgress\\\" - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeFailed\\\" - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizePending\\\" - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeInProgress\\\" - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeFailed\\\" When this field is not set, it means that no resize operation is in progress for the given PVC. \\n A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \\n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"granular\"\n },\n \"allocatedResources\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \\n Capacity reported here 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. \\n A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \\n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\"\n },\n \"capacity\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"capacity represents the actual resources of the underlying volume.\",\n \"type\": \"object\"\n },\n \"conditions\": {\n \"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'.\",\n \"items\": {\n \"description\": \"PersistentVolumeClaimCondition contains details about state of pvc\",\n \"properties\": {\n \"lastProbeTime\": {\n \"description\": \"lastProbeTime is the time we probed the condition.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"lastTransitionTime\": {\n \"description\": \"lastTransitionTime is the time the condition transitioned from one status to another.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"message is the human-readable message indicating details about last transition.\",\n \"type\": \"string\"\n },\n \"reason\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"phase\": {\n \"description\": \"phase represents the current phase of PersistentVolumeClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tag\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"tolerations\": {\n \"description\": \"If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches the triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"If specified, the pod's topology spread constraints.\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"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. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector. \\n This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"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).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"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 beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"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 beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"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 \\u003ckey, value\\u003e 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.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"version\": {\n \"description\": \"Version the cluster should be on.\",\n \"type\": \"string\"\n },\n \"volumeMounts\": {\n \"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.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"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.\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"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).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"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\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"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\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"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.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"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\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. \\n Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). \\n Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. \\n Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. \\n A pod can use both types of ephemeral volumes and persistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where `\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"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.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"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.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"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. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any 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, when namespace isn't specified in dataSourceRef, 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. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three 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. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"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\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"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.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker should be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"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.\",\n \"properties\": {\n \"directory\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"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\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"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.\",\n \"properties\": {\n \"path\": {\n \"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\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume Defaults to \\\"\\\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"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\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"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).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"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).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"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\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"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\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts. Default false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the token into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to Default is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"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\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to Defaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"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\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"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\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"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\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"web\": {\n \"description\": \"Defines the web command line flags when starting Alertmanager.\",\n \"properties\": {\n \"getConcurrency\": {\n \"description\": \"Maximum number of GET requests processed concurrently. This corresponds to the Alertmanager's `--web.get-concurrency` flag.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"httpConfig\": {\n \"description\": \"Defines HTTP parameters for web server.\",\n \"properties\": {\n \"headers\": {\n \"description\": \"List of headers that can be added to HTTP responses.\",\n \"properties\": {\n \"contentSecurityPolicy\": {\n \"description\": \"Set the Content-Security-Policy header to HTTP responses. Unset if blank.\",\n \"type\": \"string\"\n },\n \"strictTransportSecurity\": {\n \"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\",\n \"type\": \"string\"\n },\n \"xContentTypeOptions\": {\n \"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\",\n \"enum\": [\n \"\",\n \"NoSniff\"\n ],\n \"type\": \"string\"\n },\n \"xFrameOptions\": {\n \"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\",\n \"enum\": [\n \"\",\n \"Deny\",\n \"SameOrigin\"\n ],\n \"type\": \"string\"\n },\n \"xXSSProtection\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"http2\": {\n \"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.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"timeout\": {\n \"description\": \"Timeout for HTTP requests. This corresponds to the Alertmanager's `--web.timeout` flag.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tlsConfig\": {\n \"description\": \"Defines the TLS parameters for HTTPS.\",\n \"properties\": {\n \"cert\": {\n \"description\": \"Contains the TLS certificate for the server.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"cipherSuites\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"clientAuthType\": {\n \"description\": \"Server policy for client authentication. Maps to ClientAuth Policies. For more detail on clientAuth options: https://golang.org/pkg/crypto/tls/#ClientAuthType\",\n \"type\": \"string\"\n },\n \"client_ca\": {\n \"description\": \"Contains the CA certificate for client certificate authentication to the server.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"curvePreferences\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the TLS key for the server.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"maxVersion\": {\n \"description\": \"Maximum TLS version that is acceptable. Defaults to TLS13.\",\n \"type\": \"string\"\n },\n \"minVersion\": {\n \"description\": \"Minimum TLS version that is acceptable. Defaults to TLS12.\",\n \"type\": \"string\"\n },\n \"preferServerCipherSuites\": {\n \"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.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"cert\",\n \"keySecret\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"title\": \"Alertmanager\",\n \"type\": \"object\"\n}", + "version": "monitoring.coreos.com/v1" + }, + "configuration": null, + "description": "", + "displayName": "Alertmanager", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz" + }, + "model": { + "category": { + "name": "Uncategorized" + }, + "displayName": "Dnation Kubernetes Monitoring Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n" + }, + "model": { + "version": "3.6.2" + }, + "name": "dnation-kubernetes-monitoring-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Uncategorized", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#F15B2A", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 103.7 112.7\" style=\"enable-background:new 0 0 103.7 112.7;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n .st0{fill:url(#SVGID_1_);}\n\u003c/style\u003e\n\u003clinearGradient id=\"SVGID_1_\" gradientUnits=\"userSpaceOnUse\" x1=\"51.85\" y1=\"1069.5107\" x2=\"51.85\" y2=\"966.6585\" gradientTransform=\"matrix(1 0 0 1 0 -931.4)\"\u003e\n \u003cstop offset=\"0\" style=\"stop-color:#FCEE1F\"/\u003e\n \u003cstop offset=\"1\" style=\"stop-color:#F15B2A\"/\u003e\n\u003c/linearGradient\u003e\n\u003cpath class=\"st0\" d=\"M103.5,49.9c-0.2-1.9-0.5-4.1-1.1-6.5c-0.6-2.4-1.6-5-2.9-7.8c-1.4-2.7-3.1-5.6-5.4-8.3\n c-0.9-1.1-1.9-2.1-2.9-3.2c1.6-6.3-1.9-11.8-1.9-11.8c-6.1-0.4-9.9,1.9-11.3,2.9c-0.2-0.1-0.5-0.2-0.7-0.3c-1-0.4-2.1-0.8-3.2-1.2\n c-1.1-0.3-2.2-0.7-3.3-0.9c-1.1-0.3-2.3-0.5-3.5-0.7c-0.2,0-0.4-0.1-0.6-0.1C64.1,3.6,56.5,0,56.5,0c-8.7,5.6-10.4,13.1-10.4,13.1\n s0,0.2-0.1,0.4c-0.5,0.1-0.9,0.3-1.4,0.4c-0.6,0.2-1.3,0.4-1.9,0.7c-0.6,0.3-1.3,0.5-1.9,0.8c-1.3,0.6-2.5,1.2-3.8,1.9\n c-1.2,0.7-2.4,1.4-3.5,2.2c-0.2-0.1-0.3-0.2-0.3-0.2c-11.7-4.5-22.1,0.9-22.1,0.9c-0.9,12.5,4.7,20.3,5.8,21.7\n c-0.3,0.8-0.5,1.5-0.8,2.3c-0.9,2.8-1.5,5.7-1.9,8.7c-0.1,0.4-0.1,0.9-0.2,1.3C3.2,59.5,0,70.5,0,70.5c9,10.4,19.6,11,19.6,11l0,0\n c1.3,2.4,2.9,4.7,4.6,6.8c0.7,0.9,1.5,1.7,2.3,2.6c-3.3,9.4,0.5,17.3,0.5,17.3c10.1,0.4,16.7-4.4,18.1-5.5c1,0.3,2,0.6,3,0.9\n c3.1,0.8,6.3,1.3,9.4,1.4c0.8,0,1.6,0,2.4,0h0.4h0.3h0.5h0.5l0,0c4.7,6.8,13.1,7.7,13.1,7.7c5.9-6.3,6.3-12.4,6.3-13.8l0,0\n c0,0,0,0,0-0.1s0-0.2,0-0.2l0,0c0-0.1,0-0.2,0-0.3c1.2-0.9,2.4-1.8,3.6-2.8c2.4-2.1,4.4-4.6,6.2-7.2c0.2-0.2,0.3-0.5,0.5-0.7\n c6.7,0.4,11.4-4.2,11.4-4.2c-1.1-7-5.1-10.4-5.9-11l0,0c0,0,0,0-0.1-0.1l-0.1-0.1l0,0l-0.1-0.1c0-0.4,0.1-0.8,0.1-1.3\n c0.1-0.8,0.1-1.5,0.1-2.3v-0.6v-0.3v-0.1c0-0.2,0-0.1,0-0.2v-0.5v-0.6c0-0.2,0-0.4,0-0.6s0-0.4-0.1-0.6l-0.1-0.6l-0.1-0.6\n c-0.1-0.8-0.3-1.5-0.4-2.3c-0.7-3-1.9-5.9-3.4-8.4c-1.6-2.6-3.5-4.8-5.7-6.8c-2.2-1.9-4.6-3.5-7.2-4.6c-2.6-1.2-5.2-1.9-7.9-2.2\n c-1.3-0.2-2.7-0.2-4-0.2h-0.5h-0.1H67h-0.2h-0.5c-0.2,0-0.4,0-0.5,0c-0.7,0.1-1.4,0.2-2,0.3c-2.7,0.5-5.2,1.5-7.4,2.8\n c-2.2,1.3-4.1,3-5.7,4.9s-2.8,3.9-3.6,6.1c-0.8,2.1-1.3,4.4-1.4,6.5c0,0.5,0,1.1,0,1.6c0,0.1,0,0.3,0,0.4v0.4c0,0.3,0,0.5,0.1,0.8\n c0.1,1.1,0.3,2.1,0.6,3.1c0.6,2,1.5,3.8,2.7,5.4s2.5,2.8,4,3.8s3,1.7,4.6,2.2s3.1,0.7,4.5,0.6c0.2,0,0.4,0,0.5,0s0.2,0,0.3,0\n s0.2,0,0.3,0c0.2,0,0.3,0,0.5,0h0.1H64c0.1,0,0.2,0,0.3,0c0.2,0,0.4-0.1,0.5-0.1c0.2,0,0.3-0.1,0.5-0.1c0.3-0.1,0.7-0.2,1-0.3\n c0.6-0.2,1.2-0.5,1.8-0.7c0.6-0.3,1.1-0.6,1.5-0.9c0.1-0.1,0.3-0.2,0.4-0.3c0.5-0.4,0.6-1.1,0.2-1.6c-0.4-0.4-1-0.5-1.5-0.3\n c-0.1,0.1-0.2,0.1-0.4,0.2c-0.4,0.2-0.9,0.4-1.3,0.5c-0.5,0.1-1,0.3-1.5,0.4c-0.3,0-0.5,0.1-0.8,0.1c-0.1,0-0.3,0-0.4,0\n c-0.1,0-0.3,0-0.4,0s-0.3,0-0.4,0c-0.2,0-0.3,0-0.5,0c0,0-0.1,0,0,0h-0.1h-0.1c-0.1,0-0.1,0-0.2,0s-0.3,0-0.4-0.1\n c-1.1-0.2-2.3-0.5-3.4-1s-2.2-1.2-3.1-2.1c-1-0.9-1.8-1.9-2.5-3.1s-1.1-2.5-1.3-3.8c-0.1-0.7-0.2-1.4-0.1-2.1c0-0.2,0-0.4,0-0.6\n c0,0.1,0,0,0,0v-0.1v-0.1c0-0.1,0-0.2,0-0.3c0-0.4,0.1-0.7,0.2-1.1c0.5-3,2-5.9,4.3-8.1c0.6-0.6,1.2-1.1,1.9-1.5\n c0.7-0.5,1.4-0.9,2.1-1.2s1.5-0.6,2.3-0.8s1.6-0.4,2.4-0.4c0.4,0,0.8-0.1,1.2-0.1c0.1,0,0.2,0,0.3,0h0.3H67c0.1,0,0,0,0,0h0.1h0.3\n c0.9,0.1,1.8,0.2,2.6,0.4c1.7,0.4,3.4,1,5,1.9c3.2,1.8,5.9,4.5,7.5,7.8c0.8,1.6,1.4,3.4,1.7,5.3c0.1,0.5,0.1,0.9,0.2,1.4v0.3V66\n c0,0.1,0,0.2,0,0.3c0,0.1,0,0.2,0,0.3v0.3v0.3c0,0.2,0,0.6,0,0.8c0,0.5-0.1,1-0.1,1.5c-0.1,0.5-0.1,1-0.2,1.5\n c-0.1,0.5-0.2,1-0.3,1.5c-0.2,1-0.6,1.9-0.9,2.9c-0.7,1.9-1.7,3.7-2.9,5.3c-2.4,3.3-5.7,6-9.4,7.7c-1.9,0.8-3.8,1.5-5.8,1.8\n c-1,0.2-2,0.3-3,0.3h-0.2h-0.2h-0.3h-0.5h-0.3c0.1,0,0,0,0,0h-0.1c-0.5,0-1.1,0-1.6-0.1c-2.2-0.2-4.3-0.6-6.4-1.2s-4.1-1.4-6-2.4\n c-3.8-2-7.2-4.9-9.9-8.2c-1.3-1.7-2.5-3.5-3.5-5.4s-1.7-3.9-2.3-5.9s-0.9-4.1-1-6.2v-0.4v-0.1v-0.1v-0.2V60v-0.1v-0.1v-0.2v-0.5V59\n l0,0v-0.2c0-0.3,0-0.5,0-0.8c0-1,0.1-2.1,0.3-3.2c0.1-1.1,0.3-2.1,0.5-3.2c0.2-1.1,0.5-2.1,0.8-3.2c0.6-2.1,1.3-4.1,2.2-6\n c1.8-3.8,4.1-7.2,6.8-9.9c0.7-0.7,1.4-1.3,2.2-1.9c0.3-0.3,1-0.9,1.8-1.4s1.6-1,2.5-1.4c0.4-0.2,0.8-0.4,1.3-0.6\n c0.2-0.1,0.4-0.2,0.7-0.3c0.2-0.1,0.4-0.2,0.7-0.3c0.9-0.4,1.8-0.7,2.7-1c0.2-0.1,0.5-0.1,0.7-0.2s0.5-0.1,0.7-0.2\n c0.5-0.1,0.9-0.2,1.4-0.4c0.2-0.1,0.5-0.1,0.7-0.2c0.2,0,0.5-0.1,0.7-0.1s0.5-0.1,0.7-0.1l0.4-0.1l0.4-0.1c0.2,0,0.5-0.1,0.7-0.1\n c0.3,0,0.5-0.1,0.8-0.1c0.2,0,0.6-0.1,0.8-0.1c0.2,0,0.3,0,0.5-0.1h0.3H61h0.2c0.3,0,0.5,0,0.8-0.1h0.4c0,0,0.1,0,0,0h0.1h0.2\n c0.2,0,0.5,0,0.7,0c0.9,0,1.8,0,2.7,0c1.8,0.1,3.6,0.3,5.3,0.6c3.4,0.6,6.7,1.7,9.6,3.2c2.9,1.4,5.6,3.2,7.8,5.1\n c0.1,0.1,0.3,0.2,0.4,0.4c0.1,0.1,0.3,0.2,0.4,0.4c0.3,0.2,0.5,0.5,0.8,0.7s0.5,0.5,0.8,0.7c0.2,0.3,0.5,0.5,0.7,0.8\n c1,1,1.9,2.1,2.7,3.1c1.6,2.1,2.9,4.2,3.9,6.2c0.1,0.1,0.1,0.2,0.2,0.4c0.1,0.1,0.1,0.2,0.2,0.4c0.1,0.2,0.2,0.5,0.4,0.7\n c0.1,0.2,0.2,0.5,0.3,0.7c0.1,0.2,0.2,0.5,0.3,0.7c0.4,0.9,0.7,1.8,1,2.7c0.5,1.4,0.8,2.6,1.1,3.6c0.1,0.4,0.5,0.7,0.9,0.7\n c0.5,0,0.8-0.4,0.8-0.9C103.6,52.7,103.6,51.4,103.5,49.9z\"/\u003e\n\u003c/svg\u003e\n", + "svgWhite": "\u003csvg width=\"86\" height=\"62\" viewBox=\"0 0 86 62\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003ccircle cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003cpath d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M34 62V34H40V62H34Z\" fill=\"white\"/\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"/\u003e\n\u003c/svg\u003e\r" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/AlertmanagerConfig.json b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/AlertmanagerConfig.json new file mode 100644 index 00000000000..90098a91db6 --- /dev/null +++ b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/AlertmanagerConfig.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "AlertmanagerConfig", + "schema": "{\n \"description\": \"AlertmanagerConfig configures the Prometheus Alertmanager, specifying how alerts should be grouped, inhibited and notified to external systems.\",\n \"properties\": {\n \"spec\": {\n \"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.\",\n \"properties\": {\n \"inhibitRules\": {\n \"description\": \"List of inhibition rules. The rules will only apply to alerts matching the resource's namespace.\",\n \"items\": {\n \"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\",\n \"properties\": {\n \"equal\": {\n \"description\": \"Labels that must have an equal value in the source and target alert for the inhibition to take effect.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"sourceMatch\": {\n \"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.\",\n \"items\": {\n \"description\": \"Matcher defines how to match on alert's labels.\",\n \"properties\": {\n \"matchType\": {\n \"description\": \"Match operation available with AlertManager \\u003e= v0.22.0 and takes precedence over Regex (deprecated) if non-empty.\",\n \"enum\": [\n \"!=\",\n \"=\",\n \"=~\",\n \"!~\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Label to match.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"regex\": {\n \"description\": \"Whether to match on equality (false) or regular-expression (true). Deprecated as of AlertManager \\u003e= v0.22.0 where a user should use MatchType instead.\",\n \"type\": \"boolean\"\n },\n \"value\": {\n \"description\": \"Label value to match.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"targetMatch\": {\n \"description\": \"Matchers that have to be fulfilled in the alerts to be muted. The operator enforces that the alert matches the resource's namespace.\",\n \"items\": {\n \"description\": \"Matcher defines how to match on alert's labels.\",\n \"properties\": {\n \"matchType\": {\n \"description\": \"Match operation available with AlertManager \\u003e= v0.22.0 and takes precedence over Regex (deprecated) if non-empty.\",\n \"enum\": [\n \"!=\",\n \"=\",\n \"=~\",\n \"!~\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Label to match.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"regex\": {\n \"description\": \"Whether to match on equality (false) or regular-expression (true). Deprecated as of AlertManager \\u003e= v0.22.0 where a user should use MatchType instead.\",\n \"type\": \"boolean\"\n },\n \"value\": {\n \"description\": \"Label value to match.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"muteTimeIntervals\": {\n \"description\": \"List of MuteTimeInterval specifying when the routes should be muted.\",\n \"items\": {\n \"description\": \"MuteTimeInterval specifies the periods in time when notifications will be muted\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the time interval\",\n \"type\": \"string\"\n },\n \"timeIntervals\": {\n \"description\": \"TimeIntervals is a list of TimeInterval\",\n \"items\": {\n \"description\": \"TimeInterval describes intervals of time\",\n \"properties\": {\n \"daysOfMonth\": {\n \"description\": \"DaysOfMonth is a list of DayOfMonthRange\",\n \"items\": {\n \"description\": \"DayOfMonthRange is an inclusive range of days of the month beginning at 1\",\n \"properties\": {\n \"end\": {\n \"description\": \"End of the inclusive range\",\n \"maximum\": 31,\n \"minimum\": -31,\n \"type\": \"integer\"\n },\n \"start\": {\n \"description\": \"Start of the inclusive range\",\n \"maximum\": 31,\n \"minimum\": -31,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"months\": {\n \"description\": \"Months is a list of MonthRange\",\n \"items\": {\n \"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')\",\n \"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]))$)|$)\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"times\": {\n \"description\": \"Times is a list of TimeRange\",\n \"items\": {\n \"description\": \"TimeRange defines a start and end time in 24hr format\",\n \"properties\": {\n \"endTime\": {\n \"description\": \"EndTime is the end time in 24hr format.\",\n \"pattern\": \"^((([01][0-9])|(2[0-3])):[0-5][0-9])$|(^24:00$)\",\n \"type\": \"string\"\n },\n \"startTime\": {\n \"description\": \"StartTime is the start time in 24hr format.\",\n \"pattern\": \"^((([01][0-9])|(2[0-3])):[0-5][0-9])$|(^24:00$)\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"weekdays\": {\n \"description\": \"Weekdays is a list of WeekdayRange\",\n \"items\": {\n \"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')\",\n \"pattern\": \"^((?i)sun|mon|tues|wednes|thurs|fri|satur)day(?:((:(sun|mon|tues|wednes|thurs|fri|satur)day)$)|$)\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"years\": {\n \"description\": \"Years is a list of YearRange\",\n \"items\": {\n \"description\": \"YearRange is an inclusive range of years\",\n \"pattern\": \"^2\\\\d{3}(?::2\\\\d{3}|$)\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"receivers\": {\n \"description\": \"List of receivers.\",\n \"items\": {\n \"description\": \"Receiver defines one or more notification integrations.\",\n \"properties\": {\n \"discordConfigs\": {\n \"description\": \"List of Discord configurations.\",\n \"items\": {\n \"description\": \"DiscordConfig configures notifications via Discord. See https://prometheus.io/docs/alerting/latest/configuration/#discord_config\",\n \"properties\": {\n \"apiURL\": {\n \"description\": \"The secret's key that contains the Discord webhook URL. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"httpConfig\": {\n \"description\": \"HTTP client configuration.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenSecret\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"followRedirects\": {\n \"description\": \"FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\",\n \"type\": \"boolean\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 client credentials used to fetch a token for the targets.\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"proxyURL\": {\n \"description\": \"Optional proxy URL.\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration for the client.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"message\": {\n \"description\": \"The template of the message's body.\",\n \"type\": \"string\"\n },\n \"sendResolved\": {\n \"description\": \"Whether or not to notify about resolved alerts.\",\n \"type\": \"boolean\"\n },\n \"title\": {\n \"description\": \"The template of the message's title.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"apiURL\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"emailConfigs\": {\n \"description\": \"List of Email configurations.\",\n \"items\": {\n \"description\": \"EmailConfig configures notifications via Email.\",\n \"properties\": {\n \"authIdentity\": {\n \"description\": \"The identity to use for authentication.\",\n \"type\": \"string\"\n },\n \"authPassword\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"authSecret\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"authUsername\": {\n \"description\": \"The username to use for authentication.\",\n \"type\": \"string\"\n },\n \"from\": {\n \"description\": \"The sender address.\",\n \"type\": \"string\"\n },\n \"headers\": {\n \"description\": \"Further headers email header key/value pairs. Overrides any headers previously set by the notification implementation.\",\n \"items\": {\n \"description\": \"KeyValue defines a (key, value) tuple.\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key of the tuple.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of the tuple.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"hello\": {\n \"description\": \"The hostname to identify to the SMTP server.\",\n \"type\": \"string\"\n },\n \"html\": {\n \"description\": \"The HTML body of the email notification.\",\n \"type\": \"string\"\n },\n \"requireTLS\": {\n \"description\": \"The SMTP TLS requirement. Note that Go does not support unencrypted connections to remote SMTP endpoints.\",\n \"type\": \"boolean\"\n },\n \"sendResolved\": {\n \"description\": \"Whether or not to notify about resolved alerts.\",\n \"type\": \"boolean\"\n },\n \"smarthost\": {\n \"description\": \"The SMTP host and port through which emails are sent. E.g. example.com:25\",\n \"type\": \"string\"\n },\n \"text\": {\n \"description\": \"The text body of the email notification.\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"to\": {\n \"description\": \"The email address to send notifications to.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"msteamsConfigs\": {\n \"description\": \"List of MSTeams configurations. It requires Alertmanager \\u003e= 0.26.0.\",\n \"items\": {\n \"description\": \"MSTeamsConfig configures notifications via Microsoft Teams. It requires Alertmanager \\u003e= 0.26.0.\",\n \"properties\": {\n \"httpConfig\": {\n \"description\": \"HTTP client configuration.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenSecret\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"followRedirects\": {\n \"description\": \"FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\",\n \"type\": \"boolean\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 client credentials used to fetch a token for the targets.\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"proxyURL\": {\n \"description\": \"Optional proxy URL.\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration for the client.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"sendResolved\": {\n \"description\": \"Whether to notify about resolved alerts.\",\n \"type\": \"boolean\"\n },\n \"text\": {\n \"description\": \"Message body template.\",\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Message title template.\",\n \"type\": \"string\"\n },\n \"webhookUrl\": {\n \"description\": \"MSTeams webhook URL.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"webhookUrl\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the receiver. Must be unique across all items from the list.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"opsgenieConfigs\": {\n \"description\": \"List of OpsGenie configurations.\",\n \"items\": {\n \"description\": \"OpsGenieConfig configures notifications via OpsGenie. See https://prometheus.io/docs/alerting/latest/configuration/#opsgenie_config\",\n \"properties\": {\n \"actions\": {\n \"description\": \"Comma separated list of actions that will be available for the alert.\",\n \"type\": \"string\"\n },\n \"apiKey\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"apiURL\": {\n \"description\": \"The URL to send OpsGenie API requests to.\",\n \"type\": \"string\"\n },\n \"description\": {\n \"description\": \"Description of the incident.\",\n \"type\": \"string\"\n },\n \"details\": {\n \"description\": \"A set of arbitrary key/value pairs that provide further detail about the incident.\",\n \"items\": {\n \"description\": \"KeyValue defines a (key, value) tuple.\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key of the tuple.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of the tuple.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"entity\": {\n \"description\": \"Optional field that can be used to specify which domain alert is related to.\",\n \"type\": \"string\"\n },\n \"httpConfig\": {\n \"description\": \"HTTP client configuration.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenSecret\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"followRedirects\": {\n \"description\": \"FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\",\n \"type\": \"boolean\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 client credentials used to fetch a token for the targets.\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"proxyURL\": {\n \"description\": \"Optional proxy URL.\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration for the client.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"message\": {\n \"description\": \"Alert text limited to 130 characters.\",\n \"type\": \"string\"\n },\n \"note\": {\n \"description\": \"Additional alert note.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"Priority level of alert. Possible values are P1, P2, P3, P4, and P5.\",\n \"type\": \"string\"\n },\n \"responders\": {\n \"description\": \"List of responders responsible for notifications.\",\n \"items\": {\n \"description\": \"OpsGenieConfigResponder defines a responder to an incident. One of `id`, `name` or `username` has to be defined.\",\n \"properties\": {\n \"id\": {\n \"description\": \"ID of the responder.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the responder.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of responder.\",\n \"enum\": [\n \"team\",\n \"teams\",\n \"user\",\n \"escalation\",\n \"schedule\"\n ],\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username of the responder.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sendResolved\": {\n \"description\": \"Whether or not to notify about resolved alerts.\",\n \"type\": \"boolean\"\n },\n \"source\": {\n \"description\": \"Backlink to the sender of the notification.\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"Comma separated list of tags attached to the notifications.\",\n \"type\": \"string\"\n },\n \"updateAlerts\": {\n \"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.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"pagerdutyConfigs\": {\n \"description\": \"List of PagerDuty configurations.\",\n \"items\": {\n \"description\": \"PagerDutyConfig configures notifications via PagerDuty. See https://prometheus.io/docs/alerting/latest/configuration/#pagerduty_config\",\n \"properties\": {\n \"class\": {\n \"description\": \"The class/type of the event.\",\n \"type\": \"string\"\n },\n \"client\": {\n \"description\": \"Client identification.\",\n \"type\": \"string\"\n },\n \"clientURL\": {\n \"description\": \"Backlink to the sender of notification.\",\n \"type\": \"string\"\n },\n \"component\": {\n \"description\": \"The part or component of the affected system that is broken.\",\n \"type\": \"string\"\n },\n \"description\": {\n \"description\": \"Description of the incident.\",\n \"type\": \"string\"\n },\n \"details\": {\n \"description\": \"Arbitrary key/value pairs that provide further detail about the incident.\",\n \"items\": {\n \"description\": \"KeyValue defines a (key, value) tuple.\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key of the tuple.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of the tuple.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"group\": {\n \"description\": \"A cluster or grouping of sources.\",\n \"type\": \"string\"\n },\n \"httpConfig\": {\n \"description\": \"HTTP client configuration.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenSecret\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"followRedirects\": {\n \"description\": \"FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\",\n \"type\": \"boolean\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 client credentials used to fetch a token for the targets.\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"proxyURL\": {\n \"description\": \"Optional proxy URL.\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration for the client.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"pagerDutyImageConfigs\": {\n \"description\": \"A list of image details to attach that provide further detail about an incident.\",\n \"items\": {\n \"description\": \"PagerDutyImageConfig attaches images to an incident\",\n \"properties\": {\n \"alt\": {\n \"description\": \"Alt is the optional alternative text for the image.\",\n \"type\": \"string\"\n },\n \"href\": {\n \"description\": \"Optional URL; makes the image a clickable link.\",\n \"type\": \"string\"\n },\n \"src\": {\n \"description\": \"Src of the image being attached to the incident\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"pagerDutyLinkConfigs\": {\n \"description\": \"A list of link details to attach that provide further detail about an incident.\",\n \"items\": {\n \"description\": \"PagerDutyLinkConfig attaches text links to an incident\",\n \"properties\": {\n \"alt\": {\n \"description\": \"Text that describes the purpose of the link, and can be used as the link's text.\",\n \"type\": \"string\"\n },\n \"href\": {\n \"description\": \"Href is the URL of the link to be attached\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"routingKey\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"sendResolved\": {\n \"description\": \"Whether or not to notify about resolved alerts.\",\n \"type\": \"boolean\"\n },\n \"serviceKey\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"severity\": {\n \"description\": \"Severity of the incident.\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"The URL to send requests to.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"pushoverConfigs\": {\n \"description\": \"List of Pushover configurations.\",\n \"items\": {\n \"description\": \"PushoverConfig configures notifications via Pushover. See https://prometheus.io/docs/alerting/latest/configuration/#pushover_config\",\n \"properties\": {\n \"expire\": {\n \"description\": \"How long your notification will continue to be retried for, unless the user acknowledges the notification.\",\n \"pattern\": \"^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$\",\n \"type\": \"string\"\n },\n \"html\": {\n \"description\": \"Whether notification message is HTML or plain text.\",\n \"type\": \"boolean\"\n },\n \"httpConfig\": {\n \"description\": \"HTTP client configuration.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenSecret\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"followRedirects\": {\n \"description\": \"FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\",\n \"type\": \"boolean\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 client credentials used to fetch a token for the targets.\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"proxyURL\": {\n \"description\": \"Optional proxy URL.\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration for the client.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"message\": {\n \"description\": \"Notification message.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"Priority, see https://pushover.net/api#priority\",\n \"type\": \"string\"\n },\n \"retry\": {\n \"description\": \"How often the Pushover servers will send the same notification to the user. Must be at least 30 seconds.\",\n \"pattern\": \"^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$\",\n \"type\": \"string\"\n },\n \"sendResolved\": {\n \"description\": \"Whether or not to notify about resolved alerts.\",\n \"type\": \"boolean\"\n },\n \"sound\": {\n \"description\": \"The name of one of the sounds supported by device clients to override the user's default sound choice\",\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Notification title.\",\n \"type\": \"string\"\n },\n \"token\": {\n \"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. Either `token` or `tokenFile` is required.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"tokenFile\": {\n \"description\": \"The token file that contains the registered application's API token, see https://pushover.net/apps. Either `token` or `tokenFile` is required. It requires Alertmanager \\u003e= v0.26.0.\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"A supplementary URL shown alongside the message.\",\n \"type\": \"string\"\n },\n \"urlTitle\": {\n \"description\": \"A title for supplementary URL, otherwise just the URL is shown\",\n \"type\": \"string\"\n },\n \"userKey\": {\n \"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. Either `userKey` or `userKeyFile` is required.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"userKeyFile\": {\n \"description\": \"The user key file that contains the recipient user's user key. Either `userKey` or `userKeyFile` is required. It requires Alertmanager \\u003e= v0.26.0.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"slackConfigs\": {\n \"description\": \"List of Slack configurations.\",\n \"items\": {\n \"description\": \"SlackConfig configures notifications via Slack. See https://prometheus.io/docs/alerting/latest/configuration/#slack_config\",\n \"properties\": {\n \"actions\": {\n \"description\": \"A list of Slack actions that are sent with each notification.\",\n \"items\": {\n \"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.\",\n \"properties\": {\n \"confirm\": {\n \"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.\",\n \"properties\": {\n \"dismissText\": {\n \"type\": \"string\"\n },\n \"okText\": {\n \"type\": \"string\"\n },\n \"text\": {\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"text\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"style\": {\n \"type\": \"string\"\n },\n \"text\": {\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"type\": {\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"url\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"text\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"apiURL\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"callbackId\": {\n \"type\": \"string\"\n },\n \"channel\": {\n \"description\": \"The channel or user to send notifications to.\",\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"fallback\": {\n \"type\": \"string\"\n },\n \"fields\": {\n \"description\": \"A list of Slack fields that are sent with each notification.\",\n \"items\": {\n \"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.\",\n \"properties\": {\n \"short\": {\n \"type\": \"boolean\"\n },\n \"title\": {\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"value\": {\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"title\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"footer\": {\n \"type\": \"string\"\n },\n \"httpConfig\": {\n \"description\": \"HTTP client configuration.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenSecret\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"followRedirects\": {\n \"description\": \"FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\",\n \"type\": \"boolean\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 client credentials used to fetch a token for the targets.\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"proxyURL\": {\n \"description\": \"Optional proxy URL.\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration for the client.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"iconEmoji\": {\n \"type\": \"string\"\n },\n \"iconURL\": {\n \"type\": \"string\"\n },\n \"imageURL\": {\n \"type\": \"string\"\n },\n \"linkNames\": {\n \"type\": \"boolean\"\n },\n \"mrkdwnIn\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pretext\": {\n \"type\": \"string\"\n },\n \"sendResolved\": {\n \"description\": \"Whether or not to notify about resolved alerts.\",\n \"type\": \"boolean\"\n },\n \"shortFields\": {\n \"type\": \"boolean\"\n },\n \"text\": {\n \"type\": \"string\"\n },\n \"thumbURL\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"titleLink\": {\n \"type\": \"string\"\n },\n \"username\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"snsConfigs\": {\n \"description\": \"List of SNS configurations\",\n \"items\": {\n \"description\": \"SNSConfig configures notifications via AWS SNS. See https://prometheus.io/docs/alerting/latest/configuration/#sns_configs\",\n \"properties\": {\n \"apiURL\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"SNS message attributes.\",\n \"type\": \"object\"\n },\n \"httpConfig\": {\n \"description\": \"HTTP client configuration.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenSecret\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"followRedirects\": {\n \"description\": \"FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\",\n \"type\": \"boolean\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 client credentials used to fetch a token for the targets.\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"proxyURL\": {\n \"description\": \"Optional proxy URL.\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration for the client.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"message\": {\n \"description\": \"The message content of the SNS notification.\",\n \"type\": \"string\"\n },\n \"phoneNumber\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"sendResolved\": {\n \"description\": \"Whether or not to notify about resolved alerts.\",\n \"type\": \"boolean\"\n },\n \"sigv4\": {\n \"description\": \"Configures AWS's Signature Verification 4 signing process to sign requests.\",\n \"properties\": {\n \"accessKey\": {\n \"description\": \"AccessKey is the AWS API key. If not specified, the environment variable `AWS_ACCESS_KEY_ID` is used.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"profile\": {\n \"description\": \"Profile is the named AWS profile used to authenticate.\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"Region is the AWS region. If blank, the region from the default credentials chain used.\",\n \"type\": \"string\"\n },\n \"roleArn\": {\n \"description\": \"RoleArn is the named AWS profile used to authenticate.\",\n \"type\": \"string\"\n },\n \"secretKey\": {\n \"description\": \"SecretKey is the AWS API secret. If not specified, the environment variable `AWS_SECRET_ACCESS_KEY` is used.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"subject\": {\n \"description\": \"Subject line when the message is delivered to email endpoints.\",\n \"type\": \"string\"\n },\n \"targetARN\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"topicARN\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"telegramConfigs\": {\n \"description\": \"List of Telegram configurations.\",\n \"items\": {\n \"description\": \"TelegramConfig configures notifications via Telegram. See https://prometheus.io/docs/alerting/latest/configuration/#telegram_config\",\n \"properties\": {\n \"apiURL\": {\n \"description\": \"The Telegram API URL i.e. https://api.telegram.org. If not specified, default API URL will be used.\",\n \"type\": \"string\"\n },\n \"botToken\": {\n \"description\": \"Telegram bot token. It is mutually exclusive with `botTokenFile`. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. \\n Either `botToken` or `botTokenFile` is required.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"botTokenFile\": {\n \"description\": \"File to read the Telegram bot token from. It is mutually exclusive with `botToken`. Either `botToken` or `botTokenFile` is required. \\n It requires Alertmanager \\u003e= v0.26.0.\",\n \"type\": \"string\"\n },\n \"chatID\": {\n \"description\": \"The Telegram chat ID.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"disableNotifications\": {\n \"description\": \"Disable telegram notifications\",\n \"type\": \"boolean\"\n },\n \"httpConfig\": {\n \"description\": \"HTTP client configuration.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenSecret\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"followRedirects\": {\n \"description\": \"FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\",\n \"type\": \"boolean\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 client credentials used to fetch a token for the targets.\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"proxyURL\": {\n \"description\": \"Optional proxy URL.\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration for the client.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"message\": {\n \"description\": \"Message template\",\n \"type\": \"string\"\n },\n \"parseMode\": {\n \"description\": \"Parse mode for telegram message\",\n \"enum\": [\n \"MarkdownV2\",\n \"Markdown\",\n \"HTML\"\n ],\n \"type\": \"string\"\n },\n \"sendResolved\": {\n \"description\": \"Whether to notify about resolved alerts.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"victoropsConfigs\": {\n \"description\": \"List of VictorOps configurations.\",\n \"items\": {\n \"description\": \"VictorOpsConfig configures notifications via VictorOps. See https://prometheus.io/docs/alerting/latest/configuration/#victorops_config\",\n \"properties\": {\n \"apiKey\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"apiUrl\": {\n \"description\": \"The VictorOps API URL.\",\n \"type\": \"string\"\n },\n \"customFields\": {\n \"description\": \"Additional custom fields for notification.\",\n \"items\": {\n \"description\": \"KeyValue defines a (key, value) tuple.\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key of the tuple.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of the tuple.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"entityDisplayName\": {\n \"description\": \"Contains summary of the alerted problem.\",\n \"type\": \"string\"\n },\n \"httpConfig\": {\n \"description\": \"The HTTP client's configuration.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenSecret\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"followRedirects\": {\n \"description\": \"FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\",\n \"type\": \"boolean\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 client credentials used to fetch a token for the targets.\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"proxyURL\": {\n \"description\": \"Optional proxy URL.\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration for the client.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"messageType\": {\n \"description\": \"Describes the behavior of the alert (CRITICAL, WARNING, INFO).\",\n \"type\": \"string\"\n },\n \"monitoringTool\": {\n \"description\": \"The monitoring tool the state message is from.\",\n \"type\": \"string\"\n },\n \"routingKey\": {\n \"description\": \"A key used to map the alert to a team.\",\n \"type\": \"string\"\n },\n \"sendResolved\": {\n \"description\": \"Whether or not to notify about resolved alerts.\",\n \"type\": \"boolean\"\n },\n \"stateMessage\": {\n \"description\": \"Contains long explanation of the alerted problem.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"webexConfigs\": {\n \"description\": \"List of Webex configurations.\",\n \"items\": {\n \"description\": \"WebexConfig configures notification via Cisco Webex See https://prometheus.io/docs/alerting/latest/configuration/#webex_config\",\n \"properties\": {\n \"apiURL\": {\n \"description\": \"The Webex Teams API URL i.e. https://webexapis.com/v1/messages Provide if different from the default API URL.\",\n \"pattern\": \"^https?://.+$\",\n \"type\": \"string\"\n },\n \"httpConfig\": {\n \"description\": \"The HTTP client's configuration. You must supply the bot token via the `httpConfig.authorization` field.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenSecret\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"followRedirects\": {\n \"description\": \"FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\",\n \"type\": \"boolean\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 client credentials used to fetch a token for the targets.\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"proxyURL\": {\n \"description\": \"Optional proxy URL.\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration for the client.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"message\": {\n \"description\": \"Message template\",\n \"type\": \"string\"\n },\n \"roomID\": {\n \"description\": \"ID of the Webex Teams room where to send the messages.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"sendResolved\": {\n \"description\": \"Whether to notify about resolved alerts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"roomID\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"webhookConfigs\": {\n \"description\": \"List of webhook configurations.\",\n \"items\": {\n \"description\": \"WebhookConfig configures notifications via a generic receiver supporting the webhook payload. See https://prometheus.io/docs/alerting/latest/configuration/#webhook_config\",\n \"properties\": {\n \"httpConfig\": {\n \"description\": \"HTTP client configuration.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenSecret\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"followRedirects\": {\n \"description\": \"FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\",\n \"type\": \"boolean\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 client credentials used to fetch a token for the targets.\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"proxyURL\": {\n \"description\": \"Optional proxy URL.\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration for the client.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"maxAlerts\": {\n \"description\": \"Maximum number of alerts to be sent per webhook message. When 0, all alerts are included.\",\n \"format\": \"int32\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"sendResolved\": {\n \"description\": \"Whether or not to notify about resolved alerts.\",\n \"type\": \"boolean\"\n },\n \"url\": {\n \"description\": \"The URL to send HTTP POST requests to. `urlSecret` takes precedence over `url`. One of `urlSecret` and `url` should be defined.\",\n \"type\": \"string\"\n },\n \"urlSecret\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"wechatConfigs\": {\n \"description\": \"List of WeChat configurations.\",\n \"items\": {\n \"description\": \"WeChatConfig configures notifications via WeChat. See https://prometheus.io/docs/alerting/latest/configuration/#wechat_config\",\n \"properties\": {\n \"agentID\": {\n \"type\": \"string\"\n },\n \"apiSecret\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"apiURL\": {\n \"description\": \"The WeChat API URL.\",\n \"type\": \"string\"\n },\n \"corpID\": {\n \"description\": \"The corp id for authentication.\",\n \"type\": \"string\"\n },\n \"httpConfig\": {\n \"description\": \"HTTP client configuration.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenSecret\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"followRedirects\": {\n \"description\": \"FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\",\n \"type\": \"boolean\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 client credentials used to fetch a token for the targets.\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"proxyURL\": {\n \"description\": \"Optional proxy URL.\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration for the client.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"message\": {\n \"description\": \"API request data as defined by the WeChat API.\",\n \"type\": \"string\"\n },\n \"messageType\": {\n \"type\": \"string\"\n },\n \"sendResolved\": {\n \"description\": \"Whether or not to notify about resolved alerts.\",\n \"type\": \"boolean\"\n },\n \"toParty\": {\n \"type\": \"string\"\n },\n \"toTag\": {\n \"type\": \"string\"\n },\n \"toUser\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"route\": {\n \"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.\",\n \"properties\": {\n \"activeTimeIntervals\": {\n \"description\": \"ActiveTimeIntervals is a list of MuteTimeInterval names when this route should be active.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"continue\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"groupBy\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"groupInterval\": {\n \"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\\\"\",\n \"type\": \"string\"\n },\n \"groupWait\": {\n \"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\\\"\",\n \"type\": \"string\"\n },\n \"matchers\": {\n \"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: \\u003cobject namespace\\u003e` matcher.\",\n \"items\": {\n \"description\": \"Matcher defines how to match on alert's labels.\",\n \"properties\": {\n \"matchType\": {\n \"description\": \"Match operation available with AlertManager \\u003e= v0.22.0 and takes precedence over Regex (deprecated) if non-empty.\",\n \"enum\": [\n \"!=\",\n \"=\",\n \"=~\",\n \"!~\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Label to match.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"regex\": {\n \"description\": \"Whether to match on equality (false) or regular-expression (true). Deprecated as of AlertManager \\u003e= v0.22.0 where a user should use MatchType instead.\",\n \"type\": \"boolean\"\n },\n \"value\": {\n \"description\": \"Label value to match.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"muteTimeIntervals\": {\n \"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,\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"receiver\": {\n \"description\": \"Name of the receiver for this route. If not empty, it should be listed in the `receivers` field.\",\n \"type\": \"string\"\n },\n \"repeatInterval\": {\n \"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\\\"\",\n \"type\": \"string\"\n },\n \"routes\": {\n \"description\": \"Child routes.\",\n \"items\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"title\": \"Alertmanager Config\",\n \"type\": \"object\"\n}", + "version": "monitoring.coreos.com/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Alertmanager Config", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz" + }, + "model": { + "category": { + "name": "Uncategorized" + }, + "displayName": "Dnation Kubernetes Monitoring Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n" + }, + "model": { + "version": "3.6.2" + }, + "name": "dnation-kubernetes-monitoring-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Uncategorized", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"86\" height=\"62\" viewBox=\"0 0 86 62\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003ccircle cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"/\u003e\n\u003ccircle cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"/\u003e\n\u003ccircle cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"/\u003e\n\u003cpath d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"/\u003e\n\u003cpath d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"/\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"/\u003e\n\u003c/svg\u003e\r", + "svgWhite": "\u003csvg width=\"86\" height=\"62\" viewBox=\"0 0 86 62\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003ccircle cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003cpath d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M34 62V34H40V62H34Z\" fill=\"white\"/\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"/\u003e\n\u003c/svg\u003e\r" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/GrafanaAgent.json b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/GrafanaAgent.json new file mode 100644 index 00000000000..7b97d0f8eb2 --- /dev/null +++ b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/GrafanaAgent.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "GrafanaAgent", + "schema": "{\n \"description\": \"GrafanaAgent defines a Grafana Agent deployment.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"Spec holds the specification of the desired behavior for the Grafana Agent cluster.\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity, if specified, controls pod scheduling constraints.\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"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).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"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 \\u003ctopologyKey\\u003e matches that of any node on which a pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"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 \\u003ctopologyKey\\u003e matches that of any node on which a pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"apiServer\": {\n \"description\": \"APIServerConfig lets you specify a host and auth methods to access the Kubernetes API server. If left empty, the Agent assumes that it is running 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.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization section for accessing apiserver\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The secret's key that contains the credentials of the request\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"credentialsFile\": {\n \"description\": \"File to read a secret from, mutually exclusive with Credentials (from SafeAuthorization)\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Set the authentication type. Defaults to Bearer, Basic will cause an error\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerToken\": {\n \"description\": \"Bearer token for accessing apiserver.\",\n \"type\": \"string\"\n },\n \"bearerTokenFile\": {\n \"description\": \"File to read bearer token for accessing apiserver.\",\n \"type\": \"string\"\n },\n \"host\": {\n \"description\": \"Host of apiserver. A valid string consisting of a hostname or IP followed by an optional port number\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS Config to use for accessing apiserver.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the Prometheus container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"host\"\n ],\n \"type\": \"object\"\n },\n \"configMaps\": {\n \"description\": \"ConfigMaps is a list of config maps in the same namespace as the GrafanaAgent object which will be mounted into each running Grafana Agent pod. The ConfigMaps are mounted into /var/lib/grafana-agent/extra-configmaps/\\u003cconfigmap-name\\u003e.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"configReloaderImage\": {\n \"description\": \"Image, when specified, overrides the image used to run Config Reloader. Specify the image along with a tag. You still need to set the version to ensure Grafana Agent Operator knows which version of Grafana Agent is being configured.\",\n \"type\": \"string\"\n },\n \"configReloaderVersion\": {\n \"description\": \"Version of Config Reloader to be deployed.\",\n \"type\": \"string\"\n },\n \"containers\": {\n \"description\": \"Containers lets you inject additional containers or modify operator-generated containers. This can be used to add an authentication proxy to a Grafana Agent 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 if modifications are done via a strategic merge patch. The current container names are: `grafana-agent` and `config-reloader`. Overriding containers is entirely outside the scope of what the Grafana Agent team supports and by doing so, you accept that this behavior may break at any time without notice.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container. Cannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"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 \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"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.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"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.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"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\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events. Cannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"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.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"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.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"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.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host. If specified, this must be a valid port number, 0 \\u003c x \\u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod. This field may only be set for init containers, and the only allowed value is \\\"Always\\\". For non-init containers or when this field is not specified, the restart behavior is defined by the Pod's restart policy and the container type. Setting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect: this init container will be continually restarted on exit until all regular containers have terminated. Once all regular containers have completed, all init containers with restartPolicy \\\"Always\\\" will be shut down. This lifecycle differs from normal init containers and is often referred to as a \\\"sidecar\\\" container. Although this init container still starts in the init container sequence, it does not wait for the container to complete before proceeding to the next init container. Instead, the next init container starts immediately after this init container is started, or after any startupProbe has successfully completed.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"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/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"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.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"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.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are provided at both the pod \\u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"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 be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"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.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. 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.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Cannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"disableReporting\": {\n \"default\": false,\n \"description\": \"disableReporting disables reporting of enabled feature flags to Grafana.\",\n \"type\": \"boolean\"\n },\n \"disableSupportBundle\": {\n \"default\": false,\n \"description\": \"disableSupportBundle disables the generation of support bundles.\",\n \"type\": \"boolean\"\n },\n \"enableConfigReadAPI\": {\n \"default\": false,\n \"description\": \"enableConfigReadAPI enables the read API for viewing the currently running config port 8080 on the agent.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image, when specified, overrides the image used to run Agent. Specify the image along with a tag. You still need to set the version to ensure Grafana Agent Operator knows which version of Grafana Agent is being configured.\",\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets holds an optional list of references to Secrets within the same namespace used for pulling the Grafana Agent image from registries. More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"initContainers\": {\n \"description\": \"InitContainers let you add initContainers to the pod definition. These can be used to, for example, fetch secrets for injection into the Grafana Agent configuration from external sources. Errors during the execution of an initContainer cause the pod to restart. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ Using initContainers for any use case other than secret fetching is entirely outside the scope of what the Grafana Agent maintainers support and by doing so, you accept that this behavior may break at any time without notice.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container. Cannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"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 \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"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.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"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.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"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\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events. Cannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"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.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"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.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"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.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host. If specified, this must be a valid port number, 0 \\u003c x \\u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod. This field may only be set for init containers, and the only allowed value is \\\"Always\\\". For non-init containers or when this field is not specified, the restart behavior is defined by the Pod's restart policy and the container type. Setting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect: this init container will be continually restarted on exit until all regular containers have terminated. Once all regular containers have completed, all init containers with restartPolicy \\\"Always\\\" will be shut down. This lifecycle differs from normal init containers and is often referred to as a \\\"sidecar\\\" container. Although this init container still starts in the init container sequence, it does not wait for the container to complete before proceeding to the next init container. Instead, the next init container starts immediately after this init container is started, or after any startupProbe has successfully completed.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"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/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"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.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"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.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are provided at both the pod \\u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"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 be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"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.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. 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.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Cannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"integrations\": {\n \"description\": \"Integrations controls the integration subsystem of the Agent and settings unique to deployed integration-specific pods.\",\n \"properties\": {\n \"namespaceSelector\": {\n \"description\": \"Label selector for namespaces to search when discovering integration resources. If nil, integration resources are only discovered in the namespace of the GrafanaAgent resource. \\n Set to `{}` to search all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"selector\": {\n \"description\": \"Label selector to find Integration resources to run. When nil, no integration resources will be defined.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"logFormat\": {\n \"description\": \"LogFormat controls the logging format of the generated pods. Defaults to \\\"logfmt\\\" if not set.\",\n \"type\": \"string\"\n },\n \"logLevel\": {\n \"description\": \"LogLevel controls the log level of the generated pods. Defaults to \\\"info\\\" if not set.\",\n \"type\": \"string\"\n },\n \"logs\": {\n \"description\": \"Logs controls the logging subsystem of the Agent and settings unique to logging-specific pods that are deployed.\",\n \"properties\": {\n \"clients\": {\n \"description\": \"A global set of clients to use when a discovered LogsInstance does not have any clients defined.\",\n \"items\": {\n \"description\": \"LogsClientSpec defines the client integration for logs, indicating which Loki server to send logs to.\",\n \"properties\": {\n \"backoffConfig\": {\n \"description\": \"Configures how to retry requests to Loki when a request fails. Defaults to a minPeriod of 500ms, maxPeriod of 5m, and maxRetries of 10.\",\n \"properties\": {\n \"maxPeriod\": {\n \"description\": \"Maximum backoff time between retries.\",\n \"type\": \"string\"\n },\n \"maxRetries\": {\n \"description\": \"Maximum number of retries to perform before giving up a request.\",\n \"type\": \"integer\"\n },\n \"minPeriod\": {\n \"description\": \"Initial backoff time between retries. Time between retries is increased exponentially.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth for the Loki server.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"batchSize\": {\n \"description\": \"Maximum batch size (in bytes) of logs to accumulate before sending the batch to Loki.\",\n \"type\": \"integer\"\n },\n \"batchWait\": {\n \"description\": \"Maximum amount of time to wait before sending a batch, even if that batch isn't full.\",\n \"type\": \"string\"\n },\n \"bearerToken\": {\n \"description\": \"BearerToken used for remote_write.\",\n \"type\": \"string\"\n },\n \"bearerTokenFile\": {\n \"description\": \"BearerTokenFile used to read bearer token.\",\n \"type\": \"string\"\n },\n \"externalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"ExternalLabels are labels to add to any time series when sending data to Loki.\",\n \"type\": \"object\"\n },\n \"oauth2\": {\n \"description\": \"Oauth2 for URL\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"proxyUrl\": {\n \"description\": \"ProxyURL to proxy requests through. Optional.\",\n \"type\": \"string\"\n },\n \"tenantId\": {\n \"description\": \"Tenant ID used by default to push logs to Loki. If omitted assumes remote Loki is running in single-tenant mode or an authentication layer is used to inject an X-Scope-OrgID header.\",\n \"type\": \"string\"\n },\n \"timeout\": {\n \"description\": \"Maximum time to wait for a server to respond to a request.\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLSConfig to use for the client. Only used when the protocol of the URL is https.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the Prometheus container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"url\": {\n \"description\": \"URL is the URL where Loki is listening. Must be a full HTTP URL, including protocol. Required. Example: https://logs-prod-us-central1.grafana.net/loki/api/v1/push.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enforcedNamespaceLabel\": {\n \"description\": \"EnforcedNamespaceLabel enforces adding a namespace label of origin for each metric that is user-created. The label value will always be the namespace of the object that is being created.\",\n \"type\": \"string\"\n },\n \"ignoreNamespaceSelectors\": {\n \"description\": \"IgnoreNamespaceSelectors, if true, will ignore NamespaceSelector settings from the PodLogs configs, and they will only discover endpoints within their current namespace.\",\n \"type\": \"boolean\"\n },\n \"instanceNamespaceSelector\": {\n \"description\": \"InstanceNamespaceSelector are the set of labels to determine which namespaces to watch for LogInstances. If not provided, only checks own namespace.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"instanceSelector\": {\n \"description\": \"InstanceSelector determines which LogInstances should be selected for running. Each instance runs its own set of Prometheus components, including service discovery, scraping, and remote_write.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"logsExternalLabelName\": {\n \"description\": \"LogsExternalLabelName is the name of the external label used to denote Grafana Agent cluster. Defaults to \\\"cluster.\\\" External label will _not_ be added when value is set to the empty string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"metrics\": {\n \"description\": \"Metrics controls the metrics subsystem of the Agent and settings unique to metrics-specific pods that are deployed.\",\n \"properties\": {\n \"arbitraryFSAccessThroughSMs\": {\n \"description\": \"ArbitraryFSAccessThroughSMs configures whether configuration based on a ServiceMonitor can access arbitrary files on the file system of the Grafana Agent container, e.g., bearer token files.\",\n \"properties\": {\n \"deny\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"enforcedNamespaceLabel\": {\n \"description\": \"EnforcedNamespaceLabel enforces adding a namespace label of origin for each metric that is user-created. The label value is always the namespace of the object that is being created.\",\n \"type\": \"string\"\n },\n \"enforcedSampleLimit\": {\n \"description\": \"EnforcedSampleLimit defines a global limit on the number of scraped samples that are accepted. This overrides any SampleLimit set per ServiceMonitor and/or PodMonitor. It is meant to be used by admins to enforce the SampleLimit to keep the overall number of samples and series under the desired limit. Note that if a SampleLimit from a ServiceMonitor or PodMonitor is lower, that value is used instead.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"enforcedTargetLimit\": {\n \"description\": \"EnforcedTargetLimit defines a global limit on the number of scraped targets. This overrides any TargetLimit set per ServiceMonitor and/or 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 a TargetLimit from a ServiceMonitor or PodMonitor is higher, that value is used instead.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"externalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"ExternalLabels are labels to add to any time series when sending data over remote_write.\",\n \"type\": \"object\"\n },\n \"ignoreNamespaceSelectors\": {\n \"description\": \"IgnoreNamespaceSelectors, if true, ignores NamespaceSelector settings from the PodMonitor and ServiceMonitor configs, so that they only discover endpoints within their current namespace.\",\n \"type\": \"boolean\"\n },\n \"instanceNamespaceSelector\": {\n \"description\": \"InstanceNamespaceSelector is the set of labels that determines which namespaces to watch for MetricsInstances. If not provided, it only checks its own namespace.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"instanceSelector\": {\n \"description\": \"InstanceSelector determines which MetricsInstances should be selected for running. Each instance runs its own set of Metrics components, including service discovery, scraping, and remote_write.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"metricsExternalLabelName\": {\n \"description\": \"MetricsExternalLabelName is the name of the external label used to denote Grafana Agent cluster. Defaults to \\\"cluster.\\\" The external label is _not_ added when the value is set to the empty string.\",\n \"type\": \"string\"\n },\n \"overrideHonorLabels\": {\n \"description\": \"OverrideHonorLabels, if true, overrides all configured honor_labels read from ServiceMonitor or PodMonitor and sets them to false.\",\n \"type\": \"boolean\"\n },\n \"overrideHonorTimestamps\": {\n \"description\": \"OverrideHonorTimestamps allows global enforcement for honoring timestamps in all scrape configs.\",\n \"type\": \"boolean\"\n },\n \"remoteWrite\": {\n \"description\": \"RemoteWrite controls default remote_write settings for all instances. If an instance does not provide its own RemoteWrite settings, these will be used instead.\",\n \"items\": {\n \"description\": \"RemoteWriteSpec defines the remote_write configuration for Prometheus.\",\n \"properties\": {\n \"basicAuth\": {\n \"description\": \"BasicAuth for the URL.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerToken\": {\n \"description\": \"BearerToken used for remote_write.\",\n \"type\": \"string\"\n },\n \"bearerTokenFile\": {\n \"description\": \"BearerTokenFile used to read bearer token.\",\n \"type\": \"string\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Headers is a set of custom HTTP headers to be sent along with each remote_write request. Be aware that any headers set by Grafana Agent itself can't be overwritten.\",\n \"type\": \"object\"\n },\n \"metadataConfig\": {\n \"description\": \"MetadataConfig configures the sending of series metadata to remote storage.\",\n \"properties\": {\n \"send\": {\n \"description\": \"Send enables metric metadata to be sent to remote storage.\",\n \"type\": \"boolean\"\n },\n \"sendInterval\": {\n \"description\": \"SendInterval controls how frequently metric metadata is sent to remote storage.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the remote_write queue. Must be unique if specified. The name is used in metrics and logging in order to differentiate queues.\",\n \"type\": \"string\"\n },\n \"oauth2\": {\n \"description\": \"Oauth2 for URL\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"proxyUrl\": {\n \"description\": \"ProxyURL to proxy requests through. Optional.\",\n \"type\": \"string\"\n },\n \"queueConfig\": {\n \"description\": \"QueueConfig allows tuning of the remote_write queue parameters.\",\n \"properties\": {\n \"batchSendDeadline\": {\n \"description\": \"BatchSendDeadline is the maximum time a sample will wait in the buffer.\",\n \"type\": \"string\"\n },\n \"capacity\": {\n \"description\": \"Capacity is the number of samples to buffer per shard before samples start being dropped.\",\n \"type\": \"integer\"\n },\n \"maxBackoff\": {\n \"description\": \"MaxBackoff is the maximum retry delay.\",\n \"type\": \"string\"\n },\n \"maxRetries\": {\n \"description\": \"MaxRetries is the maximum number of times to retry a batch on recoverable errors.\",\n \"type\": \"integer\"\n },\n \"maxSamplesPerSend\": {\n \"description\": \"MaxSamplesPerSend is the maximum number of samples per send.\",\n \"type\": \"integer\"\n },\n \"maxShards\": {\n \"description\": \"MaxShards is the maximum number of shards, i.e., the amount of concurrency.\",\n \"type\": \"integer\"\n },\n \"minBackoff\": {\n \"description\": \"MinBackoff is the initial retry delay. MinBackoff is doubled for every retry.\",\n \"type\": \"string\"\n },\n \"minShards\": {\n \"description\": \"MinShards is the minimum number of shards, i.e., the amount of concurrency.\",\n \"type\": \"integer\"\n },\n \"retryOnRateLimit\": {\n \"description\": \"RetryOnRateLimit retries requests when encountering rate limits.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"remoteTimeout\": {\n \"description\": \"RemoteTimeout is the timeout for requests to the remote_write endpoint.\",\n \"type\": \"string\"\n },\n \"sigv4\": {\n \"description\": \"SigV4 configures SigV4-based authentication to the remote_write endpoint. SigV4-based authentication is used if SigV4 is defined, even with an empty object.\",\n \"properties\": {\n \"accessKey\": {\n \"description\": \"AccessKey holds the secret of the AWS API access key to use for signing. If not provided, the environment variable AWS_ACCESS_KEY_ID is used.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"profile\": {\n \"description\": \"Profile is the named AWS profile to use for authentication.\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"Region of the AWS endpoint. If blank, the region from the default credentials chain is used.\",\n \"type\": \"string\"\n },\n \"roleARN\": {\n \"description\": \"RoleARN is the AWS Role ARN to use for authentication, as an alternative for using the AWS API keys.\",\n \"type\": \"string\"\n },\n \"secretKey\": {\n \"description\": \"SecretKey of the AWS API to use for signing. If blank, the environment variable AWS_SECRET_ACCESS_KEY is used.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"tlsConfig\": {\n \"description\": \"TLSConfig to use for remote_write.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the Prometheus container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"url\": {\n \"description\": \"URL of the endpoint to send samples to.\",\n \"type\": \"string\"\n },\n \"writeRelabelConfigs\": {\n \"description\": \"WriteRelabelConfigs holds relabel_configs to relabel samples before they are sent to the remote_write endpoint.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines `\\u003cmetric_relabel_configs\\u003e`-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\",\n \"properties\": {\n \"action\": {\n \"default\": \"replace\",\n \"description\": \"Action to perform based on regex matching. Default is 'replace'. uppercase and lowercase actions require Prometheus \\u003e= 2.36.\",\n \"enum\": [\n \"replace\",\n \"Replace\",\n \"keep\",\n \"Keep\",\n \"drop\",\n \"Drop\",\n \"hashmod\",\n \"HashMod\",\n \"labelmap\",\n \"LabelMap\",\n \"labeldrop\",\n \"LabelDrop\",\n \"labelkeep\",\n \"LabelKeep\",\n \"lowercase\",\n \"Lowercase\",\n \"uppercase\",\n \"Uppercase\",\n \"keepequal\",\n \"KeepEqual\",\n \"dropequal\",\n \"DropEqual\"\n ],\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"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.\",\n \"items\": {\n \"description\": \"LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\",\n \"pattern\": \"^[a-zA-Z_][a-zA-Z0-9_]*$\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"replicaExternalLabelName\": {\n \"description\": \"ReplicaExternalLabelName is the name of the metrics external label used to denote the replica name. Defaults to __replica__. The external label is _not_ added when the value is set to the empty string.\",\n \"type\": \"string\"\n },\n \"replicas\": {\n \"description\": \"Replicas of each shard to deploy for metrics pods. Number of replicas multiplied by the number of shards is the total number of pods created.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"scrapeInterval\": {\n \"description\": \"ScrapeInterval is the time between consecutive scrapes.\",\n \"type\": \"string\"\n },\n \"scrapeTimeout\": {\n \"description\": \"ScrapeTimeout is the time to wait for a target to respond before marking a scrape as failed.\",\n \"type\": \"string\"\n },\n \"shards\": {\n \"description\": \"Shards to distribute targets onto. Number of replicas multiplied by the number of shards is the total number of pods created. Note that scaling down shards does not reshard data onto remaining instances; it must be manually moved. Increasing shards does not reshard data either, but it will continue to be available from the same instances. Sharding is performed on the content of the __address__ target meta-label.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector defines which nodes pods should be scheduling on.\",\n \"type\": \"object\"\n },\n \"paused\": {\n \"description\": \"Paused prevents actions except for deletion to be performed on the underlying managed objects.\",\n \"type\": \"boolean\"\n },\n \"podMetadata\": {\n \"description\": \"PodMetadata configures Labels and Annotations which are propagated to created Grafana Agent pods.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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\",\n \"type\": \"object\"\n },\n \"name\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"portName\": {\n \"description\": \"Port name used for the pods and governing service. This defaults to agent-metrics.\",\n \"type\": \"string\"\n },\n \"priorityClassName\": {\n \"description\": \"PriorityClassName is the priority class assigned to pods.\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resources holds requests and limits for individual pods.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName is the runtime class assigned to pods.\",\n \"type\": \"string\"\n },\n \"secrets\": {\n \"description\": \"Secrets is a list of secrets in the same namespace as the GrafanaAgent object which will be mounted into each running Grafana Agent pod. The secrets are mounted into /var/lib/grafana-agent/extra-secrets/\\u003csecret-name\\u003e.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings. When unspecified, defaults to the default PodSecurityContext.\",\n \"properties\": {\n \"fsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"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.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"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.\",\n \"properties\": {\n \"localhostProfile\": {\n \"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 be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"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.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"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.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. 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.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use for running Grafana Agent pods.\",\n \"type\": \"string\"\n },\n \"storage\": {\n \"description\": \"Storage spec to specify how storage will be used.\",\n \"properties\": {\n \"disableMountSubPath\": {\n \"description\": \"*Deprecated: subPath usage will be removed in a future release.*\",\n \"type\": \"boolean\"\n },\n \"emptyDir\": {\n \"description\": \"EmptyDirVolumeSource to be used by the StatefulSet. If specified, it takes precedence over `ephemeral` and `volumeClaimTemplate`. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir\",\n \"properties\": {\n \"medium\": {\n \"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\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"EphemeralVolumeSource to be used by the StatefulSet. This is a beta field in k8s 1.21 and GA in 1.15. 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\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where `\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"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.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"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.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"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. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any 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, when namespace isn't specified in dataSourceRef, 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. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three 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. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"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\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"Defines the PVC spec to be used by the Prometheus StatefulSets. The easiest way to use a volume that cannot be automatically provisioned is to use a label selector alongside manually created PersistentVolumes.\",\n \"properties\": {\n \"apiVersion\": {\n \"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\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"EmbeddedMetadata contains metadata relevant to an EmbeddedResource.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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\",\n \"type\": \"object\"\n },\n \"name\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"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. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any 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, when namespace isn't specified in dataSourceRef, 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. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three 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. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"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\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"status\": {\n \"description\": \"*Deprecated: this field is never set.*\",\n \"properties\": {\n \"accessModes\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allocatedResourceStatuses\": {\n \"additionalProperties\": {\n \"description\": \"When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource that it does not recognizes, then it should ignore that update and let other controllers handle it.\",\n \"type\": \"string\"\n },\n \"description\": \"allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \\n ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeInProgress\\\" - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeFailed\\\" - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizePending\\\" - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeInProgress\\\" - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeFailed\\\" When this field is not set, it means that no resize operation is in progress for the given PVC. \\n A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \\n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"granular\"\n },\n \"allocatedResources\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \\n Capacity reported here 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. \\n A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \\n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\"\n },\n \"capacity\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"capacity represents the actual resources of the underlying volume.\",\n \"type\": \"object\"\n },\n \"conditions\": {\n \"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'.\",\n \"items\": {\n \"description\": \"PersistentVolumeClaimCondition contains details about state of pvc\",\n \"properties\": {\n \"lastProbeTime\": {\n \"description\": \"lastProbeTime is the time we probed the condition.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"lastTransitionTime\": {\n \"description\": \"lastTransitionTime is the time the condition transitioned from one status to another.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"message is the human-readable message indicating details about last transition.\",\n \"type\": \"string\"\n },\n \"reason\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"phase\": {\n \"description\": \"phase represents the current phase of PersistentVolumeClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations, if specified, controls the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches the triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints, if specified, controls the pod's topology spread constraints.\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"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. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector. \\n This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"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).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"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 beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"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 beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"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 \\u003ckey, value\\u003e 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.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"version\": {\n \"description\": \"Version of Grafana Agent to be deployed.\",\n \"type\": \"string\"\n },\n \"volumeMounts\": {\n \"description\": \"VolumeMounts lets you configure additional VolumeMounts on the output StatefulSet definition. Specified VolumeMounts are appended to other VolumeMounts generated as a result of StorageSpec objects in the Grafana Agent container.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"description\": \"Volumes allows configuration of additional volumes on the output StatefulSet definition. The volumes specified are appended to other volumes that are generated as a result of StorageSpec objects.\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"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).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"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\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"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\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"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.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"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\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. \\n Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). \\n Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. \\n Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. \\n A pod can use both types of ephemeral volumes and persistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where `\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"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.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"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.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"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. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any 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, when namespace isn't specified in dataSourceRef, 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. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three 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. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"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\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"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.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker should be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"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.\",\n \"properties\": {\n \"directory\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"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\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"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.\",\n \"properties\": {\n \"path\": {\n \"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\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume Defaults to \\\"\\\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"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\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"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).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"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).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"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\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"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\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts. Default false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the token into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to Default is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"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\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to Defaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"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\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"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\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"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\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Grafana Agent\",\n \"type\": \"object\"\n}", + "version": "monitoring.grafana.com/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Grafana Agent", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz" + }, + "model": { + "category": { + "name": "Uncategorized" + }, + "displayName": "Dnation Kubernetes Monitoring Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n" + }, + "model": { + "version": "3.6.2" + }, + "name": "dnation-kubernetes-monitoring-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Uncategorized", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#F15B2A", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 103.7 112.7\" style=\"enable-background:new 0 0 103.7 112.7;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n .st0{fill:url(#SVGID_1_);}\n\u003c/style\u003e\n\u003clinearGradient id=\"SVGID_1_\" gradientUnits=\"userSpaceOnUse\" x1=\"51.85\" y1=\"1069.5107\" x2=\"51.85\" y2=\"966.6585\" gradientTransform=\"matrix(1 0 0 1 0 -931.4)\"\u003e\n \u003cstop offset=\"0\" style=\"stop-color:#FCEE1F\"/\u003e\n \u003cstop offset=\"1\" style=\"stop-color:#F15B2A\"/\u003e\n\u003c/linearGradient\u003e\n\u003cpath class=\"st0\" d=\"M103.5,49.9c-0.2-1.9-0.5-4.1-1.1-6.5c-0.6-2.4-1.6-5-2.9-7.8c-1.4-2.7-3.1-5.6-5.4-8.3\n c-0.9-1.1-1.9-2.1-2.9-3.2c1.6-6.3-1.9-11.8-1.9-11.8c-6.1-0.4-9.9,1.9-11.3,2.9c-0.2-0.1-0.5-0.2-0.7-0.3c-1-0.4-2.1-0.8-3.2-1.2\n c-1.1-0.3-2.2-0.7-3.3-0.9c-1.1-0.3-2.3-0.5-3.5-0.7c-0.2,0-0.4-0.1-0.6-0.1C64.1,3.6,56.5,0,56.5,0c-8.7,5.6-10.4,13.1-10.4,13.1\n s0,0.2-0.1,0.4c-0.5,0.1-0.9,0.3-1.4,0.4c-0.6,0.2-1.3,0.4-1.9,0.7c-0.6,0.3-1.3,0.5-1.9,0.8c-1.3,0.6-2.5,1.2-3.8,1.9\n c-1.2,0.7-2.4,1.4-3.5,2.2c-0.2-0.1-0.3-0.2-0.3-0.2c-11.7-4.5-22.1,0.9-22.1,0.9c-0.9,12.5,4.7,20.3,5.8,21.7\n c-0.3,0.8-0.5,1.5-0.8,2.3c-0.9,2.8-1.5,5.7-1.9,8.7c-0.1,0.4-0.1,0.9-0.2,1.3C3.2,59.5,0,70.5,0,70.5c9,10.4,19.6,11,19.6,11l0,0\n c1.3,2.4,2.9,4.7,4.6,6.8c0.7,0.9,1.5,1.7,2.3,2.6c-3.3,9.4,0.5,17.3,0.5,17.3c10.1,0.4,16.7-4.4,18.1-5.5c1,0.3,2,0.6,3,0.9\n c3.1,0.8,6.3,1.3,9.4,1.4c0.8,0,1.6,0,2.4,0h0.4h0.3h0.5h0.5l0,0c4.7,6.8,13.1,7.7,13.1,7.7c5.9-6.3,6.3-12.4,6.3-13.8l0,0\n c0,0,0,0,0-0.1s0-0.2,0-0.2l0,0c0-0.1,0-0.2,0-0.3c1.2-0.9,2.4-1.8,3.6-2.8c2.4-2.1,4.4-4.6,6.2-7.2c0.2-0.2,0.3-0.5,0.5-0.7\n c6.7,0.4,11.4-4.2,11.4-4.2c-1.1-7-5.1-10.4-5.9-11l0,0c0,0,0,0-0.1-0.1l-0.1-0.1l0,0l-0.1-0.1c0-0.4,0.1-0.8,0.1-1.3\n c0.1-0.8,0.1-1.5,0.1-2.3v-0.6v-0.3v-0.1c0-0.2,0-0.1,0-0.2v-0.5v-0.6c0-0.2,0-0.4,0-0.6s0-0.4-0.1-0.6l-0.1-0.6l-0.1-0.6\n c-0.1-0.8-0.3-1.5-0.4-2.3c-0.7-3-1.9-5.9-3.4-8.4c-1.6-2.6-3.5-4.8-5.7-6.8c-2.2-1.9-4.6-3.5-7.2-4.6c-2.6-1.2-5.2-1.9-7.9-2.2\n c-1.3-0.2-2.7-0.2-4-0.2h-0.5h-0.1H67h-0.2h-0.5c-0.2,0-0.4,0-0.5,0c-0.7,0.1-1.4,0.2-2,0.3c-2.7,0.5-5.2,1.5-7.4,2.8\n c-2.2,1.3-4.1,3-5.7,4.9s-2.8,3.9-3.6,6.1c-0.8,2.1-1.3,4.4-1.4,6.5c0,0.5,0,1.1,0,1.6c0,0.1,0,0.3,0,0.4v0.4c0,0.3,0,0.5,0.1,0.8\n c0.1,1.1,0.3,2.1,0.6,3.1c0.6,2,1.5,3.8,2.7,5.4s2.5,2.8,4,3.8s3,1.7,4.6,2.2s3.1,0.7,4.5,0.6c0.2,0,0.4,0,0.5,0s0.2,0,0.3,0\n s0.2,0,0.3,0c0.2,0,0.3,0,0.5,0h0.1H64c0.1,0,0.2,0,0.3,0c0.2,0,0.4-0.1,0.5-0.1c0.2,0,0.3-0.1,0.5-0.1c0.3-0.1,0.7-0.2,1-0.3\n c0.6-0.2,1.2-0.5,1.8-0.7c0.6-0.3,1.1-0.6,1.5-0.9c0.1-0.1,0.3-0.2,0.4-0.3c0.5-0.4,0.6-1.1,0.2-1.6c-0.4-0.4-1-0.5-1.5-0.3\n c-0.1,0.1-0.2,0.1-0.4,0.2c-0.4,0.2-0.9,0.4-1.3,0.5c-0.5,0.1-1,0.3-1.5,0.4c-0.3,0-0.5,0.1-0.8,0.1c-0.1,0-0.3,0-0.4,0\n c-0.1,0-0.3,0-0.4,0s-0.3,0-0.4,0c-0.2,0-0.3,0-0.5,0c0,0-0.1,0,0,0h-0.1h-0.1c-0.1,0-0.1,0-0.2,0s-0.3,0-0.4-0.1\n c-1.1-0.2-2.3-0.5-3.4-1s-2.2-1.2-3.1-2.1c-1-0.9-1.8-1.9-2.5-3.1s-1.1-2.5-1.3-3.8c-0.1-0.7-0.2-1.4-0.1-2.1c0-0.2,0-0.4,0-0.6\n c0,0.1,0,0,0,0v-0.1v-0.1c0-0.1,0-0.2,0-0.3c0-0.4,0.1-0.7,0.2-1.1c0.5-3,2-5.9,4.3-8.1c0.6-0.6,1.2-1.1,1.9-1.5\n c0.7-0.5,1.4-0.9,2.1-1.2s1.5-0.6,2.3-0.8s1.6-0.4,2.4-0.4c0.4,0,0.8-0.1,1.2-0.1c0.1,0,0.2,0,0.3,0h0.3H67c0.1,0,0,0,0,0h0.1h0.3\n c0.9,0.1,1.8,0.2,2.6,0.4c1.7,0.4,3.4,1,5,1.9c3.2,1.8,5.9,4.5,7.5,7.8c0.8,1.6,1.4,3.4,1.7,5.3c0.1,0.5,0.1,0.9,0.2,1.4v0.3V66\n c0,0.1,0,0.2,0,0.3c0,0.1,0,0.2,0,0.3v0.3v0.3c0,0.2,0,0.6,0,0.8c0,0.5-0.1,1-0.1,1.5c-0.1,0.5-0.1,1-0.2,1.5\n c-0.1,0.5-0.2,1-0.3,1.5c-0.2,1-0.6,1.9-0.9,2.9c-0.7,1.9-1.7,3.7-2.9,5.3c-2.4,3.3-5.7,6-9.4,7.7c-1.9,0.8-3.8,1.5-5.8,1.8\n c-1,0.2-2,0.3-3,0.3h-0.2h-0.2h-0.3h-0.5h-0.3c0.1,0,0,0,0,0h-0.1c-0.5,0-1.1,0-1.6-0.1c-2.2-0.2-4.3-0.6-6.4-1.2s-4.1-1.4-6-2.4\n c-3.8-2-7.2-4.9-9.9-8.2c-1.3-1.7-2.5-3.5-3.5-5.4s-1.7-3.9-2.3-5.9s-0.9-4.1-1-6.2v-0.4v-0.1v-0.1v-0.2V60v-0.1v-0.1v-0.2v-0.5V59\n l0,0v-0.2c0-0.3,0-0.5,0-0.8c0-1,0.1-2.1,0.3-3.2c0.1-1.1,0.3-2.1,0.5-3.2c0.2-1.1,0.5-2.1,0.8-3.2c0.6-2.1,1.3-4.1,2.2-6\n c1.8-3.8,4.1-7.2,6.8-9.9c0.7-0.7,1.4-1.3,2.2-1.9c0.3-0.3,1-0.9,1.8-1.4s1.6-1,2.5-1.4c0.4-0.2,0.8-0.4,1.3-0.6\n c0.2-0.1,0.4-0.2,0.7-0.3c0.2-0.1,0.4-0.2,0.7-0.3c0.9-0.4,1.8-0.7,2.7-1c0.2-0.1,0.5-0.1,0.7-0.2s0.5-0.1,0.7-0.2\n c0.5-0.1,0.9-0.2,1.4-0.4c0.2-0.1,0.5-0.1,0.7-0.2c0.2,0,0.5-0.1,0.7-0.1s0.5-0.1,0.7-0.1l0.4-0.1l0.4-0.1c0.2,0,0.5-0.1,0.7-0.1\n c0.3,0,0.5-0.1,0.8-0.1c0.2,0,0.6-0.1,0.8-0.1c0.2,0,0.3,0,0.5-0.1h0.3H61h0.2c0.3,0,0.5,0,0.8-0.1h0.4c0,0,0.1,0,0,0h0.1h0.2\n c0.2,0,0.5,0,0.7,0c0.9,0,1.8,0,2.7,0c1.8,0.1,3.6,0.3,5.3,0.6c3.4,0.6,6.7,1.7,9.6,3.2c2.9,1.4,5.6,3.2,7.8,5.1\n c0.1,0.1,0.3,0.2,0.4,0.4c0.1,0.1,0.3,0.2,0.4,0.4c0.3,0.2,0.5,0.5,0.8,0.7s0.5,0.5,0.8,0.7c0.2,0.3,0.5,0.5,0.7,0.8\n c1,1,1.9,2.1,2.7,3.1c1.6,2.1,2.9,4.2,3.9,6.2c0.1,0.1,0.1,0.2,0.2,0.4c0.1,0.1,0.1,0.2,0.2,0.4c0.1,0.2,0.2,0.5,0.4,0.7\n c0.1,0.2,0.2,0.5,0.3,0.7c0.1,0.2,0.2,0.5,0.3,0.7c0.4,0.9,0.7,1.8,1,2.7c0.5,1.4,0.8,2.6,1.1,3.6c0.1,0.4,0.5,0.7,0.9,0.7\n c0.5,0,0.8-0.4,0.8-0.9C103.6,52.7,103.6,51.4,103.5,49.9z\"/\u003e\n\u003c/svg\u003e\n", + "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 103.7 112.7\" style=\"enable-background:new 0 0 103.7 112.7;\" xml:space=\"preserve\" width='103.7' height='112.7'\u003e\n\u003cstyle type=\"text/css\"\u003e\n .st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M103.5,49.9c-0.2-1.9-0.5-4.1-1.1-6.5c-0.6-2.4-1.6-5-2.9-7.8c-1.4-2.7-3.1-5.6-5.4-8.3\n c-0.9-1.1-1.9-2.1-2.9-3.2c1.6-6.3-1.9-11.8-1.9-11.8c-6.1-0.4-9.9,1.9-11.3,2.9c-0.2-0.1-0.5-0.2-0.7-0.3c-1-0.4-2.1-0.8-3.2-1.2\n c-1.1-0.3-2.2-0.7-3.3-0.9c-1.1-0.3-2.3-0.5-3.5-0.7c-0.2,0-0.4-0.1-0.6-0.1C64.1,3.6,56.5,0,56.5,0c-8.7,5.6-10.4,13.1-10.4,13.1\n s0,0.2-0.1,0.4c-0.5,0.1-0.9,0.3-1.4,0.4c-0.6,0.2-1.3,0.4-1.9,0.7c-0.6,0.3-1.3,0.5-1.9,0.8c-1.3,0.6-2.5,1.2-3.8,1.9\n c-1.2,0.7-2.4,1.4-3.5,2.2c-0.2-0.1-0.3-0.2-0.3-0.2c-11.7-4.5-22.1,0.9-22.1,0.9c-0.9,12.5,4.7,20.3,5.8,21.7\n c-0.3,0.8-0.5,1.5-0.8,2.3c-0.9,2.8-1.5,5.7-1.9,8.7c-0.1,0.4-0.1,0.9-0.2,1.3C3.2,59.5,0,70.5,0,70.5c9,10.4,19.6,11,19.6,11l0,0\n c1.3,2.4,2.9,4.7,4.6,6.8c0.7,0.9,1.5,1.7,2.3,2.6c-3.3,9.4,0.5,17.3,0.5,17.3c10.1,0.4,16.7-4.4,18.1-5.5c1,0.3,2,0.6,3,0.9\n c3.1,0.8,6.3,1.3,9.4,1.4c0.8,0,1.6,0,2.4,0h0.4h0.3h0.5h0.5l0,0c4.7,6.8,13.1,7.7,13.1,7.7c5.9-6.3,6.3-12.4,6.3-13.8l0,0\n c0,0,0,0,0-0.1s0-0.2,0-0.2l0,0c0-0.1,0-0.2,0-0.3c1.2-0.9,2.4-1.8,3.6-2.8c2.4-2.1,4.4-4.6,6.2-7.2c0.2-0.2,0.3-0.5,0.5-0.7\n c6.7,0.4,11.4-4.2,11.4-4.2c-1.1-7-5.1-10.4-5.9-11l0,0c0,0,0,0-0.1-0.1l-0.1-0.1l0,0l-0.1-0.1c0-0.4,0.1-0.8,0.1-1.3\n c0.1-0.8,0.1-1.5,0.1-2.3v-0.6v-0.3v-0.1c0-0.2,0-0.1,0-0.2v-0.5v-0.6c0-0.2,0-0.4,0-0.6s0-0.4-0.1-0.6l-0.1-0.6l-0.1-0.6\n c-0.1-0.8-0.3-1.5-0.4-2.3c-0.7-3-1.9-5.9-3.4-8.4c-1.6-2.6-3.5-4.8-5.7-6.8c-2.2-1.9-4.6-3.5-7.2-4.6c-2.6-1.2-5.2-1.9-7.9-2.2\n c-1.3-0.2-2.7-0.2-4-0.2h-0.5h-0.1H67h-0.2h-0.5c-0.2,0-0.4,0-0.5,0c-0.7,0.1-1.4,0.2-2,0.3c-2.7,0.5-5.2,1.5-7.4,2.8\n c-2.2,1.3-4.1,3-5.7,4.9s-2.8,3.9-3.6,6.1c-0.8,2.1-1.3,4.4-1.4,6.5c0,0.5,0,1.1,0,1.6c0,0.1,0,0.3,0,0.4v0.4c0,0.3,0,0.5,0.1,0.8\n c0.1,1.1,0.3,2.1,0.6,3.1c0.6,2,1.5,3.8,2.7,5.4s2.5,2.8,4,3.8s3,1.7,4.6,2.2s3.1,0.7,4.5,0.6c0.2,0,0.4,0,0.5,0s0.2,0,0.3,0\n s0.2,0,0.3,0c0.2,0,0.3,0,0.5,0h0.1H64c0.1,0,0.2,0,0.3,0c0.2,0,0.4-0.1,0.5-0.1c0.2,0,0.3-0.1,0.5-0.1c0.3-0.1,0.7-0.2,1-0.3\n c0.6-0.2,1.2-0.5,1.8-0.7c0.6-0.3,1.1-0.6,1.5-0.9c0.1-0.1,0.3-0.2,0.4-0.3c0.5-0.4,0.6-1.1,0.2-1.6c-0.4-0.4-1-0.5-1.5-0.3\n c-0.1,0.1-0.2,0.1-0.4,0.2c-0.4,0.2-0.9,0.4-1.3,0.5c-0.5,0.1-1,0.3-1.5,0.4c-0.3,0-0.5,0.1-0.8,0.1c-0.1,0-0.3,0-0.4,0\n c-0.1,0-0.3,0-0.4,0s-0.3,0-0.4,0c-0.2,0-0.3,0-0.5,0c0,0-0.1,0,0,0h-0.1h-0.1c-0.1,0-0.1,0-0.2,0s-0.3,0-0.4-0.1\n c-1.1-0.2-2.3-0.5-3.4-1s-2.2-1.2-3.1-2.1c-1-0.9-1.8-1.9-2.5-3.1s-1.1-2.5-1.3-3.8c-0.1-0.7-0.2-1.4-0.1-2.1c0-0.2,0-0.4,0-0.6\n c0,0.1,0,0,0,0v-0.1v-0.1c0-0.1,0-0.2,0-0.3c0-0.4,0.1-0.7,0.2-1.1c0.5-3,2-5.9,4.3-8.1c0.6-0.6,1.2-1.1,1.9-1.5\n c0.7-0.5,1.4-0.9,2.1-1.2s1.5-0.6,2.3-0.8s1.6-0.4,2.4-0.4c0.4,0,0.8-0.1,1.2-0.1c0.1,0,0.2,0,0.3,0h0.3H67c0.1,0,0,0,0,0h0.1h0.3\n c0.9,0.1,1.8,0.2,2.6,0.4c1.7,0.4,3.4,1,5,1.9c3.2,1.8,5.9,4.5,7.5,7.8c0.8,1.6,1.4,3.4,1.7,5.3c0.1,0.5,0.1,0.9,0.2,1.4v0.3V66\n c0,0.1,0,0.2,0,0.3c0,0.1,0,0.2,0,0.3v0.3v0.3c0,0.2,0,0.6,0,0.8c0,0.5-0.1,1-0.1,1.5c-0.1,0.5-0.1,1-0.2,1.5\n c-0.1,0.5-0.2,1-0.3,1.5c-0.2,1-0.6,1.9-0.9,2.9c-0.7,1.9-1.7,3.7-2.9,5.3c-2.4,3.3-5.7,6-9.4,7.7c-1.9,0.8-3.8,1.5-5.8,1.8\n c-1,0.2-2,0.3-3,0.3h-0.2h-0.2h-0.3h-0.5h-0.3c0.1,0,0,0,0,0h-0.1c-0.5,0-1.1,0-1.6-0.1c-2.2-0.2-4.3-0.6-6.4-1.2s-4.1-1.4-6-2.4\n c-3.8-2-7.2-4.9-9.9-8.2c-1.3-1.7-2.5-3.5-3.5-5.4s-1.7-3.9-2.3-5.9s-0.9-4.1-1-6.2v-0.4v-0.1v-0.1v-0.2V60v-0.1v-0.1v-0.2v-0.5V59\n l0,0v-0.2c0-0.3,0-0.5,0-0.8c0-1,0.1-2.1,0.3-3.2c0.1-1.1,0.3-2.1,0.5-3.2c0.2-1.1,0.5-2.1,0.8-3.2c0.6-2.1,1.3-4.1,2.2-6\n c1.8-3.8,4.1-7.2,6.8-9.9c0.7-0.7,1.4-1.3,2.2-1.9c0.3-0.3,1-0.9,1.8-1.4s1.6-1,2.5-1.4c0.4-0.2,0.8-0.4,1.3-0.6\n c0.2-0.1,0.4-0.2,0.7-0.3c0.2-0.1,0.4-0.2,0.7-0.3c0.9-0.4,1.8-0.7,2.7-1c0.2-0.1,0.5-0.1,0.7-0.2s0.5-0.1,0.7-0.2\n c0.5-0.1,0.9-0.2,1.4-0.4c0.2-0.1,0.5-0.1,0.7-0.2c0.2,0,0.5-0.1,0.7-0.1s0.5-0.1,0.7-0.1l0.4-0.1l0.4-0.1c0.2,0,0.5-0.1,0.7-0.1\n c0.3,0,0.5-0.1,0.8-0.1c0.2,0,0.6-0.1,0.8-0.1c0.2,0,0.3,0,0.5-0.1h0.3H61h0.2c0.3,0,0.5,0,0.8-0.1h0.4c0,0,0.1,0,0,0h0.1h0.2\n c0.2,0,0.5,0,0.7,0c0.9,0,1.8,0,2.7,0c1.8,0.1,3.6,0.3,5.3,0.6c3.4,0.6,6.7,1.7,9.6,3.2c2.9,1.4,5.6,3.2,7.8,5.1\n c0.1,0.1,0.3,0.2,0.4,0.4c0.1,0.1,0.3,0.2,0.4,0.4c0.3,0.2,0.5,0.5,0.8,0.7s0.5,0.5,0.8,0.7c0.2,0.3,0.5,0.5,0.7,0.8\n c1,1,1.9,2.1,2.7,3.1c1.6,2.1,2.9,4.2,3.9,6.2c0.1,0.1,0.1,0.2,0.2,0.4c0.1,0.1,0.1,0.2,0.2,0.4c0.1,0.2,0.2,0.5,0.4,0.7\n c0.1,0.2,0.2,0.5,0.3,0.7c0.1,0.2,0.2,0.5,0.3,0.7c0.4,0.9,0.7,1.8,1,2.7c0.5,1.4,0.8,2.6,1.1,3.6c0.1,0.4,0.5,0.7,0.9,0.7\n c0.5,0,0.8-0.4,0.8-0.9C103.6,52.7,103.6,51.4,103.5,49.9z\"/\u003e\n\u003c/svg\u003e\n" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/Integration.json b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/Integration.json new file mode 100644 index 00000000000..4333440062b --- /dev/null +++ b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/Integration.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "Integration", + "schema": "{\n \"description\": \"Integration runs a single Grafana Agent integration. Integrations that generate telemetry must be configured to send that telemetry somewhere, such as autoscrape for exporter-based integrations. \\n Integrations have access to the LogsInstances and MetricsInstances in the same GrafanaAgent resource set, referenced by the \\u003cnamespace\\u003e/\\u003cname\\u003e of the Instance resource. \\n For example, if there is a default/production MetricsInstance, you can configure a supported integration's autoscrape block with: \\n autoscrape: enable: true metrics_instance: default/production \\n There is currently no way for telemetry created by an Operator-managed integration to be collected from outside of the integration itself.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"Specifies the desired behavior of the Integration.\",\n \"properties\": {\n \"config\": {\n \"description\": \"The configuration for the named integration. Note that Integrations are deployed with the integrations-next feature flag, which has different common settings: \\n https://grafana.com/docs/agent/latest/configuration/integrations/integrations-next/\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"configMaps\": {\n \"description\": \"An extra list of keys from ConfigMaps in the same namespace as the Integration which will be mounted into the Grafana Agent pod running this Integration. \\n ConfigMaps are mounted at /etc/grafana-agent/integrations/configMaps/\\u003cconfigmap_namespace\\u003e/\\u003cconfigmap_name\\u003e/\\u003ckey\\u003e.\",\n \"items\": {\n \"description\": \"Selects a key from a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the integration to run (e.g., \\\"node_exporter\\\", \\\"mysqld_exporter\\\").\",\n \"type\": \"string\"\n },\n \"secrets\": {\n \"description\": \"An extra list of keys from Secrets in the same namespace as the Integration which will be mounted into the Grafana Agent pod running this Integration. \\n Secrets will be mounted at /etc/grafana-agent/integrations/secrets/\\u003csecret_namespace\\u003e/\\u003csecret_name\\u003e/\\u003ckey\\u003e.\",\n \"items\": {\n \"description\": \"SecretKeySelector selects a key of a Secret.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"description\": \"Type informs Grafana Agent Operator about how to manage the integration being configured.\",\n \"properties\": {\n \"allNodes\": {\n \"description\": \"When true, the configured integration should be run on every Node in the cluster. This is required for Integrations that generate Node-specific metrics like node_exporter, otherwise it must be false to avoid generating duplicate metrics.\",\n \"type\": \"boolean\"\n },\n \"unique\": {\n \"description\": \"Whether this integration can only be defined once for a Grafana Agent process, such as statsd_exporter. It is invalid for a GrafanaAgent to discover multiple unique Integrations with the same Integration name (i.e., a single GrafanaAgent cannot deploy two statsd_exporters).\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeMounts\": {\n \"description\": \"An extra list of VolumeMounts to be associated with the Grafana Agent pods running this integration. VolumeMount names are mutated to be unique across all used IntegrationSpecs. \\n Mount paths should include the namespace/name of the Integration CR to avoid potentially colliding with other resources.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"description\": \"An extra list of Volumes to be associated with the Grafana Agent pods running this integration. Volume names are mutated to be unique across all Integrations. Note that the specified volumes should be able to tolerate existing on multiple pods at once when type is daemonset. \\n Don't use volumes for loading Secrets or ConfigMaps from the same namespace as the Integration; use the Secrets and ConfigMaps fields instead.\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"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).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"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\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"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\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"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.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"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\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. \\n Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). \\n Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. \\n Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. \\n A pod can use both types of ephemeral volumes and persistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where `\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"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.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"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.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"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. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any 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, when namespace isn't specified in dataSourceRef, 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. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three 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. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"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\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"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.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker should be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"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.\",\n \"properties\": {\n \"directory\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"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\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"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.\",\n \"properties\": {\n \"path\": {\n \"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\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume Defaults to \\\"\\\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"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\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"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).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"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).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"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\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"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\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts. Default false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the token into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to Default is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"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\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to Defaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"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\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"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\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"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\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"config\",\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Integration\",\n \"type\": \"object\"\n}", + "version": "monitoring.grafana.com/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Integration", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz" + }, + "model": { + "category": { + "name": "Uncategorized" + }, + "displayName": "Dnation Kubernetes Monitoring Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n" + }, + "model": { + "version": "3.6.2" + }, + "name": "dnation-kubernetes-monitoring-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Uncategorized", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"86\" height=\"62\" viewBox=\"0 0 86 62\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003ccircle cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"/\u003e\n\u003ccircle cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"/\u003e\n\u003ccircle cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"/\u003e\n\u003cpath d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"/\u003e\n\u003cpath d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"/\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"/\u003e\n\u003c/svg\u003e\r", + "svgWhite": "\u003csvg width=\"86\" height=\"62\" viewBox=\"0 0 86 62\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003ccircle cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003cpath d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M34 62V34H40V62H34Z\" fill=\"white\"/\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"/\u003e\n\u003c/svg\u003e\r" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/LogsInstance.json b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/LogsInstance.json new file mode 100644 index 00000000000..e9cadbb629c --- /dev/null +++ b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/LogsInstance.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "LogsInstance", + "schema": "{\n \"description\": \"LogsInstance controls an individual logs instance within a Grafana Agent deployment.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"Spec holds the specification of the desired behavior for the logs instance.\",\n \"properties\": {\n \"additionalScrapeConfigs\": {\n \"description\": \"AdditionalScrapeConfigs allows specifying a key of a Secret containing additional Grafana Agent logging scrape configurations. Scrape configurations specified are appended to the configurations generated by the Grafana Agent Operator. \\n Job configurations specified must have the form as specified in the official Promtail documentation: \\n https://grafana.com/docs/loki/latest/clients/promtail/configuration/#scrape_configs \\n 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 Grafana Agent. It is advised to review both Grafana Agent and Promtail release notes to ensure that no incompatible scrape configs are going to break Grafana Agent after the upgrade.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"clients\": {\n \"description\": \"Clients controls where logs are written to for this instance.\",\n \"items\": {\n \"description\": \"LogsClientSpec defines the client integration for logs, indicating which Loki server to send logs to.\",\n \"properties\": {\n \"backoffConfig\": {\n \"description\": \"Configures how to retry requests to Loki when a request fails. Defaults to a minPeriod of 500ms, maxPeriod of 5m, and maxRetries of 10.\",\n \"properties\": {\n \"maxPeriod\": {\n \"description\": \"Maximum backoff time between retries.\",\n \"type\": \"string\"\n },\n \"maxRetries\": {\n \"description\": \"Maximum number of retries to perform before giving up a request.\",\n \"type\": \"integer\"\n },\n \"minPeriod\": {\n \"description\": \"Initial backoff time between retries. Time between retries is increased exponentially.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth for the Loki server.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"batchSize\": {\n \"description\": \"Maximum batch size (in bytes) of logs to accumulate before sending the batch to Loki.\",\n \"type\": \"integer\"\n },\n \"batchWait\": {\n \"description\": \"Maximum amount of time to wait before sending a batch, even if that batch isn't full.\",\n \"type\": \"string\"\n },\n \"bearerToken\": {\n \"description\": \"BearerToken used for remote_write.\",\n \"type\": \"string\"\n },\n \"bearerTokenFile\": {\n \"description\": \"BearerTokenFile used to read bearer token.\",\n \"type\": \"string\"\n },\n \"externalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"ExternalLabels are labels to add to any time series when sending data to Loki.\",\n \"type\": \"object\"\n },\n \"oauth2\": {\n \"description\": \"Oauth2 for URL\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"proxyUrl\": {\n \"description\": \"ProxyURL to proxy requests through. Optional.\",\n \"type\": \"string\"\n },\n \"tenantId\": {\n \"description\": \"Tenant ID used by default to push logs to Loki. If omitted assumes remote Loki is running in single-tenant mode or an authentication layer is used to inject an X-Scope-OrgID header.\",\n \"type\": \"string\"\n },\n \"timeout\": {\n \"description\": \"Maximum time to wait for a server to respond to a request.\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLSConfig to use for the client. Only used when the protocol of the URL is https.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the Prometheus container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"url\": {\n \"description\": \"URL is the URL where Loki is listening. Must be a full HTTP URL, including protocol. Required. Example: https://logs-prod-us-central1.grafana.net/loki/api/v1/push.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"podLogsNamespaceSelector\": {\n \"description\": \"Set of labels to determine which namespaces should be watched for PodLogs. If not provided, checks only namespace of the instance.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"podLogsSelector\": {\n \"description\": \"Determines which PodLogs should be selected for including in this instance.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetConfig\": {\n \"description\": \"Configures how tailed targets are watched.\",\n \"properties\": {\n \"syncPeriod\": {\n \"description\": \"Period to resync directories being watched and files being tailed to discover new ones or stop watching removed ones.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Logs Instance\",\n \"type\": \"object\"\n}", + "version": "monitoring.grafana.com/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Logs Instance", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz" + }, + "model": { + "category": { + "name": "Uncategorized" + }, + "displayName": "Dnation Kubernetes Monitoring Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n" + }, + "model": { + "version": "3.6.2" + }, + "name": "dnation-kubernetes-monitoring-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Uncategorized", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"86\" height=\"62\" viewBox=\"0 0 86 62\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003ccircle cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"/\u003e\n\u003ccircle cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"/\u003e\n\u003ccircle cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"/\u003e\n\u003cpath d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"/\u003e\n\u003cpath d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"/\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"/\u003e\n\u003c/svg\u003e\r", + "svgWhite": "\u003csvg width=\"86\" height=\"62\" viewBox=\"0 0 86 62\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003ccircle cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003cpath d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M34 62V34H40V62H34Z\" fill=\"white\"/\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"/\u003e\n\u003c/svg\u003e\r" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/MetricsInstance.json b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/MetricsInstance.json new file mode 100644 index 00000000000..bcb9149a320 --- /dev/null +++ b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/MetricsInstance.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "MetricsInstance", + "schema": "{\n \"description\": \"MetricsInstance controls an individual Metrics instance within a Grafana Agent deployment.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"Spec holds the specification of the desired behavior for the Metrics instance.\",\n \"properties\": {\n \"additionalScrapeConfigs\": {\n \"description\": \"AdditionalScrapeConfigs lets you specify a key of a Secret containing additional Grafana Agent Prometheus scrape configurations. The specified scrape configurations are appended to the configurations generated by Grafana Agent Operator. Specified job configurations must have the form specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config. As scrape configs are appended, you must make sure the configuration is still valid. Note that it's possible that this feature will break future upgrades of Grafana Agent. Review both Grafana Agent and Prometheus release notes to ensure that no incompatible scrape configs will break Grafana Agent after the upgrade.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"maxWALTime\": {\n \"description\": \"MaxWALTime is the maximum amount of time that series and samples can exist in the WAL before being forcibly deleted.\",\n \"type\": \"string\"\n },\n \"minWALTime\": {\n \"description\": \"MinWALTime is the minimum amount of time that series and samples can exist in the WAL before being considered for deletion.\",\n \"type\": \"string\"\n },\n \"podMonitorNamespaceSelector\": {\n \"description\": \"PodMonitorNamespaceSelector are the set of labels to determine which namespaces to watch for PodMonitor discovery. If nil, it only checks its own namespace.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"podMonitorSelector\": {\n \"description\": \"PodMonitorSelector determines which PodMonitors to selected for target discovery. Experimental.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"probeNamespaceSelector\": {\n \"description\": \"ProbeNamespaceSelector is the set of labels that determines which namespaces to watch for Probe discovery. If nil, it only checks own namespace.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"probeSelector\": {\n \"description\": \"ProbeSelector determines which Probes to select for target discovery.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"remoteFlushDeadline\": {\n \"description\": \"RemoteFlushDeadline is the deadline for flushing data when an instance shuts down.\",\n \"type\": \"string\"\n },\n \"remoteWrite\": {\n \"description\": \"RemoteWrite controls remote_write settings for this instance.\",\n \"items\": {\n \"description\": \"RemoteWriteSpec defines the remote_write configuration for Prometheus.\",\n \"properties\": {\n \"basicAuth\": {\n \"description\": \"BasicAuth for the URL.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerToken\": {\n \"description\": \"BearerToken used for remote_write.\",\n \"type\": \"string\"\n },\n \"bearerTokenFile\": {\n \"description\": \"BearerTokenFile used to read bearer token.\",\n \"type\": \"string\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Headers is a set of custom HTTP headers to be sent along with each remote_write request. Be aware that any headers set by Grafana Agent itself can't be overwritten.\",\n \"type\": \"object\"\n },\n \"metadataConfig\": {\n \"description\": \"MetadataConfig configures the sending of series metadata to remote storage.\",\n \"properties\": {\n \"send\": {\n \"description\": \"Send enables metric metadata to be sent to remote storage.\",\n \"type\": \"boolean\"\n },\n \"sendInterval\": {\n \"description\": \"SendInterval controls how frequently metric metadata is sent to remote storage.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the remote_write queue. Must be unique if specified. The name is used in metrics and logging in order to differentiate queues.\",\n \"type\": \"string\"\n },\n \"oauth2\": {\n \"description\": \"Oauth2 for URL\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"proxyUrl\": {\n \"description\": \"ProxyURL to proxy requests through. Optional.\",\n \"type\": \"string\"\n },\n \"queueConfig\": {\n \"description\": \"QueueConfig allows tuning of the remote_write queue parameters.\",\n \"properties\": {\n \"batchSendDeadline\": {\n \"description\": \"BatchSendDeadline is the maximum time a sample will wait in the buffer.\",\n \"type\": \"string\"\n },\n \"capacity\": {\n \"description\": \"Capacity is the number of samples to buffer per shard before samples start being dropped.\",\n \"type\": \"integer\"\n },\n \"maxBackoff\": {\n \"description\": \"MaxBackoff is the maximum retry delay.\",\n \"type\": \"string\"\n },\n \"maxRetries\": {\n \"description\": \"MaxRetries is the maximum number of times to retry a batch on recoverable errors.\",\n \"type\": \"integer\"\n },\n \"maxSamplesPerSend\": {\n \"description\": \"MaxSamplesPerSend is the maximum number of samples per send.\",\n \"type\": \"integer\"\n },\n \"maxShards\": {\n \"description\": \"MaxShards is the maximum number of shards, i.e., the amount of concurrency.\",\n \"type\": \"integer\"\n },\n \"minBackoff\": {\n \"description\": \"MinBackoff is the initial retry delay. MinBackoff is doubled for every retry.\",\n \"type\": \"string\"\n },\n \"minShards\": {\n \"description\": \"MinShards is the minimum number of shards, i.e., the amount of concurrency.\",\n \"type\": \"integer\"\n },\n \"retryOnRateLimit\": {\n \"description\": \"RetryOnRateLimit retries requests when encountering rate limits.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"remoteTimeout\": {\n \"description\": \"RemoteTimeout is the timeout for requests to the remote_write endpoint.\",\n \"type\": \"string\"\n },\n \"sigv4\": {\n \"description\": \"SigV4 configures SigV4-based authentication to the remote_write endpoint. SigV4-based authentication is used if SigV4 is defined, even with an empty object.\",\n \"properties\": {\n \"accessKey\": {\n \"description\": \"AccessKey holds the secret of the AWS API access key to use for signing. If not provided, the environment variable AWS_ACCESS_KEY_ID is used.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"profile\": {\n \"description\": \"Profile is the named AWS profile to use for authentication.\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"Region of the AWS endpoint. If blank, the region from the default credentials chain is used.\",\n \"type\": \"string\"\n },\n \"roleARN\": {\n \"description\": \"RoleARN is the AWS Role ARN to use for authentication, as an alternative for using the AWS API keys.\",\n \"type\": \"string\"\n },\n \"secretKey\": {\n \"description\": \"SecretKey of the AWS API to use for signing. If blank, the environment variable AWS_SECRET_ACCESS_KEY is used.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"tlsConfig\": {\n \"description\": \"TLSConfig to use for remote_write.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the Prometheus container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"url\": {\n \"description\": \"URL of the endpoint to send samples to.\",\n \"type\": \"string\"\n },\n \"writeRelabelConfigs\": {\n \"description\": \"WriteRelabelConfigs holds relabel_configs to relabel samples before they are sent to the remote_write endpoint.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines `\\u003cmetric_relabel_configs\\u003e`-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\",\n \"properties\": {\n \"action\": {\n \"default\": \"replace\",\n \"description\": \"Action to perform based on regex matching. Default is 'replace'. uppercase and lowercase actions require Prometheus \\u003e= 2.36.\",\n \"enum\": [\n \"replace\",\n \"Replace\",\n \"keep\",\n \"Keep\",\n \"drop\",\n \"Drop\",\n \"hashmod\",\n \"HashMod\",\n \"labelmap\",\n \"LabelMap\",\n \"labeldrop\",\n \"LabelDrop\",\n \"labelkeep\",\n \"LabelKeep\",\n \"lowercase\",\n \"Lowercase\",\n \"uppercase\",\n \"Uppercase\",\n \"keepequal\",\n \"KeepEqual\",\n \"dropequal\",\n \"DropEqual\"\n ],\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"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.\",\n \"items\": {\n \"description\": \"LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\",\n \"pattern\": \"^[a-zA-Z_][a-zA-Z0-9_]*$\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"serviceMonitorNamespaceSelector\": {\n \"description\": \"ServiceMonitorNamespaceSelector is the set of labels that determine which namespaces to watch for ServiceMonitor discovery. If nil, it only checks its own namespace.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceMonitorSelector\": {\n \"description\": \"ServiceMonitorSelector determines which ServiceMonitors to select for target discovery.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"walTruncateFrequency\": {\n \"description\": \"WALTruncateFrequency specifies how frequently to run the WAL truncation process. Higher values cause the WAL to increase and for old series to stay in the WAL longer, but reduces the chance of data loss when remote_write fails for longer than the given frequency.\",\n \"type\": \"string\"\n },\n \"writeStaleOnShutdown\": {\n \"description\": \"WriteStaleOnShutdown writes staleness markers on shutdown for all series.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Metrics Instance\",\n \"type\": \"object\"\n}", + "version": "monitoring.grafana.com/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Metrics Instance", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz" + }, + "model": { + "category": { + "name": "Uncategorized" + }, + "displayName": "Dnation Kubernetes Monitoring Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n" + }, + "model": { + "version": "3.6.2" + }, + "name": "dnation-kubernetes-monitoring-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Uncategorized", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"86\" height=\"62\" viewBox=\"0 0 86 62\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003ccircle cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"/\u003e\n\u003ccircle cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"/\u003e\n\u003ccircle cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"/\u003e\n\u003cpath d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"/\u003e\n\u003cpath d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"/\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"/\u003e\n\u003c/svg\u003e\r", + "svgWhite": "\u003csvg width=\"86\" height=\"62\" viewBox=\"0 0 86 62\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003ccircle cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003cpath d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M34 62V34H40V62H34Z\" fill=\"white\"/\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"/\u003e\n\u003c/svg\u003e\r" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/PodLogs.json b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/PodLogs.json new file mode 100644 index 00000000000..df6d43aa16c --- /dev/null +++ b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/PodLogs.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "PodLogs", + "schema": "{\n \"description\": \"PodLogs defines how to collect logs for a pod.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"Spec holds the specification of the desired behavior for the PodLogs.\",\n \"properties\": {\n \"jobLabel\": {\n \"description\": \"The label to use to retrieve the job name from.\",\n \"type\": \"string\"\n },\n \"namespaceSelector\": {\n \"description\": \"Selector to select which namespaces the Pod objects are discovered from.\",\n \"properties\": {\n \"any\": {\n \"description\": \"Boolean describing whether all namespaces are selected in contrast to a list restricting them.\",\n \"type\": \"boolean\"\n },\n \"matchNames\": {\n \"description\": \"List of namespace names to select from.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"pipelineStages\": {\n \"description\": \"Pipeline stages for this pod. Pipeline stages support transforming and filtering log lines.\",\n \"items\": {\n \"description\": \"PipelineStageSpec defines an individual pipeline stage. Each stage type is mutually exclusive and no more than one may be set per stage. \\n More information on pipelines can be found in the Promtail documentation: https://grafana.com/docs/loki/latest/clients/promtail/pipelines/\",\n \"properties\": {\n \"cri\": {\n \"description\": \"CRI is a parsing stage that reads log lines using the standard CRI logging format. Supply cri: {} to enable.\",\n \"type\": \"object\"\n },\n \"docker\": {\n \"description\": \"Docker is a parsing stage that reads log lines using the standard Docker logging format. Supply docker: {} to enable.\",\n \"type\": \"object\"\n },\n \"drop\": {\n \"description\": \"Drop is a filtering stage that lets you drop certain logs.\",\n \"properties\": {\n \"dropCounterReason\": {\n \"description\": \"Every time a log line is dropped, the metric logentry_dropped_lines_total is incremented. A \\\"reason\\\" label is added, and can be customized by providing a custom value here. Defaults to \\\"drop_stage\\\".\",\n \"type\": \"string\"\n },\n \"expression\": {\n \"description\": \"RE2 regular expression. \\n If source is provided, the regex attempts to match the source. \\n If no source is provided, then the regex attempts to attach the log line. \\n If the provided regex matches the log line or a provided source, the line is dropped.\",\n \"type\": \"string\"\n },\n \"longerThan\": {\n \"description\": \"LongerThan will drop a log line if it its content is longer than this value (in bytes). Can be expressed as an integer (8192) or a number with a suffix (8kb).\",\n \"type\": \"string\"\n },\n \"olderThan\": {\n \"description\": \"OlderThan will be parsed as a Go duration. If the log line's timestamp is older than the current time minus the provided duration, it will be dropped.\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"Name from the extract data to parse. If empty, uses the log message.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value can only be specified when source is specified. If the value provided is an exact match for the given source then the line will be dropped. \\n Mutually exclusive with expression.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"json\": {\n \"description\": \"JSON is a parsing stage that reads the log line as JSON and accepts JMESPath expressions to extract data. \\n Information on JMESPath: http://jmespath.org/\",\n \"properties\": {\n \"expressions\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Set of the key/value pairs of JMESPath expressions. The key will be the key in the extracted data while the expression will be the value, evaluated as a JMESPath from the source data. \\n Literal JMESPath expressions can be used by wrapping a key in double quotes, which then must be wrapped again in single quotes in YAML so they get passed to the JMESPath parser.\",\n \"type\": \"object\"\n },\n \"source\": {\n \"description\": \"Name from the extracted data to parse as JSON. If empty, uses entire log message.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"labelAllow\": {\n \"description\": \"LabelAllow is an action stage that only allows the provided labels to be included in the label set that is sent to Loki with the log entry.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labelDrop\": {\n \"description\": \"LabelDrop is an action stage that drops labels from the label set that is sent to Loki with the log entry.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is an action stage that takes data from the extracted map and modifies the label set that is sent to Loki with the log entry. \\n The key is REQUIRED and represents the name for the label that will be created. Value is optional and will be the name from extracted data to use for the value of the label. If the value is not provided, it defaults to match the key.\",\n \"type\": \"object\"\n },\n \"limit\": {\n \"description\": \"Limit is a rate-limiting stage that throttles logs based on several options.\",\n \"properties\": {\n \"burst\": {\n \"description\": \"The cap in the quantity of burst lines that Promtail will push to Loki.\",\n \"type\": \"integer\"\n },\n \"drop\": {\n \"description\": \"When drop is true, log lines that exceed the current rate limit are discarded. When drop is false, log lines that exceed the current rate limit wait to enter the back pressure mode. \\n Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"rate\": {\n \"description\": \"The rate limit in lines per second that Promtail will push to Loki.\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is a filtering stage that conditionally applies a set of stages or drop entries when a log entry matches a configurable LogQL stream selector and filter expressions.\",\n \"properties\": {\n \"action\": {\n \"description\": \"Determines what action is taken when the selector matches the log line. Can be keep or drop. Defaults to keep. When set to drop, entries are dropped and no later metrics are recorded. Stages must be empty when dropping metrics.\",\n \"type\": \"string\"\n },\n \"dropCounterReason\": {\n \"description\": \"Every time a log line is dropped, the metric logentry_dropped_lines_total is incremented. A \\\"reason\\\" label is added, and can be customized by providing a custom value here. Defaults to \\\"match_stage.\\\"\",\n \"type\": \"string\"\n },\n \"pipelineName\": {\n \"description\": \"Names the pipeline. When defined, creates an additional label in the pipeline_duration_seconds histogram, where the value is concatenated with job_name using an underscore.\",\n \"type\": \"string\"\n },\n \"selector\": {\n \"description\": \"LogQL stream selector and filter expressions. Required.\",\n \"type\": \"string\"\n },\n \"stages\": {\n \"description\": \"Nested set of pipeline stages to execute when action is keep and the log line matches selector. \\n An example value for stages may be: \\n stages: | - json: {} - labelAllow: [foo, bar] \\n Note that stages is a string because SIG API Machinery does not support recursive types, and so it cannot be validated for correctness. Be careful not to mistype anything.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"selector\"\n ],\n \"type\": \"object\"\n },\n \"metrics\": {\n \"additionalProperties\": {\n \"description\": \"MetricsStageSpec is an action stage that allows for defining and updating metrics based on data from the extracted map. Created metrics are not pushed to Loki or Prometheus and are instead exposed via the /metrics endpoint of the Grafana Agent pod. The Grafana Agent Operator should be configured with a MetricsInstance that discovers the logging DaemonSet to collect metrics created by this stage.\",\n \"properties\": {\n \"action\": {\n \"description\": \"The action to take against the metric. Required. \\n Must be either \\\"inc\\\" or \\\"add\\\" for type: counter or type: histogram. When type: gauge, must be one of \\\"set\\\", \\\"inc\\\", \\\"dec\\\", \\\"add\\\", or \\\"sub\\\". \\n \\\"add\\\", \\\"set\\\", or \\\"sub\\\" requires the extracted value to be convertible to a positive float.\",\n \"type\": \"string\"\n },\n \"buckets\": {\n \"description\": \"Buckets to create. Bucket values must be convertible to float64s. Extremely large or small numbers are subject to some loss of precision. Only valid for type: histogram.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"countEntryBytes\": {\n \"description\": \"If true all log line bytes are counted. Can only be set with matchAll: true and action: add. \\n Only valid for type: counter.\",\n \"type\": \"boolean\"\n },\n \"description\": {\n \"description\": \"Sets the description for the created metric.\",\n \"type\": \"string\"\n },\n \"matchAll\": {\n \"description\": \"If true, all log lines are counted without attempting to match the source to the extracted map. Mutually exclusive with value. \\n Only valid for type: counter.\",\n \"type\": \"boolean\"\n },\n \"maxIdleDuration\": {\n \"description\": \"Label values on metrics are dynamic which can cause exported metrics to go stale. To prevent unbounded cardinality, any metrics not updated within MaxIdleDuration are removed. \\n Must be greater or equal to 1s. Defaults to 5m.\",\n \"type\": \"string\"\n },\n \"prefix\": {\n \"description\": \"Sets the custom prefix name for the metric. Defaults to \\\"promtail_custom_\\\".\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"Key from the extracted data map to use for the metric. Defaults to the metrics name if not present.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The metric type to create. Must be one of counter, gauge, histogram. Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Filters down source data and only changes the metric if the targeted value matches the provided string exactly. If not present, all data matches.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"action\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"description\": \"Metrics is an action stage that supports defining and updating metrics based on data from the extracted map. Created metrics are not pushed to Loki or Prometheus and are instead exposed via the /metrics endpoint of the Grafana Agent pod. The Grafana Agent Operator should be configured with a MetricsInstance that discovers the logging DaemonSet to collect metrics created by this stage.\",\n \"type\": \"object\"\n },\n \"multiline\": {\n \"description\": \"Multiline stage merges multiple lines into a multiline block before passing it on to the next stage in the pipeline.\",\n \"properties\": {\n \"firstLine\": {\n \"description\": \"RE2 regular expression. Creates a new multiline block when matched. Required.\",\n \"type\": \"string\"\n },\n \"maxLines\": {\n \"description\": \"Maximum number of lines a block can have. A new block is started if the number of lines surpasses this value. Defaults to 128.\",\n \"type\": \"integer\"\n },\n \"maxWaitTime\": {\n \"description\": \"Maximum time to wait before passing on the multiline block to the next stage if no new lines are received. Defaults to 3s.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"firstLine\"\n ],\n \"type\": \"object\"\n },\n \"output\": {\n \"description\": \"Output stage is an action stage that takes data from the extracted map and changes the log line that will be sent to Loki.\",\n \"properties\": {\n \"source\": {\n \"description\": \"Name from extract data to use for the log entry. Required.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"source\"\n ],\n \"type\": \"object\"\n },\n \"pack\": {\n \"description\": \"Pack is a transform stage that lets you embed extracted values and labels into the log line by packing the log line and labels inside of a JSON object.\",\n \"properties\": {\n \"ingestTimestamp\": {\n \"description\": \"If the resulting log line should use any existing timestamp or use time.Now() when the line was created. Set to true when combining several log streams from different containers to avoid out of order errors.\",\n \"type\": \"boolean\"\n },\n \"labels\": {\n \"description\": \"Name from extracted data or line labels. Required. Labels provided here are automatically removed from output labels.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"labels\"\n ],\n \"type\": \"object\"\n },\n \"regex\": {\n \"description\": \"Regex is a parsing stage that parses a log line using a regular expression. Named capture groups in the regex allows for adding data into the extracted map.\",\n \"properties\": {\n \"expression\": {\n \"description\": \"RE2 regular expression. Each capture group MUST be named. Required.\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"Name from extracted data to parse. If empty, defaults to using the log message.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"expression\"\n ],\n \"type\": \"object\"\n },\n \"replace\": {\n \"description\": \"Replace is a parsing stage that parses a log line using a regular expression and replaces the log line. Named capture groups in the regex allows for adding data into the extracted map.\",\n \"properties\": {\n \"expression\": {\n \"description\": \"RE2 regular expression. Each capture group MUST be named. Required.\",\n \"type\": \"string\"\n },\n \"replace\": {\n \"description\": \"Value to replace the captured group with.\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"Name from extracted data to parse. If empty, defaults to using the log message.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"expression\"\n ],\n \"type\": \"object\"\n },\n \"template\": {\n \"description\": \"Template is a transform stage that manipulates the values in the extracted map using Go's template syntax.\",\n \"properties\": {\n \"source\": {\n \"description\": \"Name from extracted data to parse. Required. If empty, defaults to using the log message.\",\n \"type\": \"string\"\n },\n \"template\": {\n \"description\": \"Go template string to use. Required. In addition to normal template functions, ToLower, ToUpper, Replace, Trim, TrimLeft, TrimRight, TrimPrefix, and TrimSpace are also available.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"source\",\n \"template\"\n ],\n \"type\": \"object\"\n },\n \"tenant\": {\n \"description\": \"Tenant is an action stage that sets the tenant ID for the log entry picking it from a field in the extracted data map. If the field is missing, the default LogsClientSpec.tenantId will be used.\",\n \"properties\": {\n \"label\": {\n \"description\": \"Name from labels whose value should be set as tenant ID. Mutually exclusive with source and value.\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"Name from extracted data to use as the tenant ID. Mutually exclusive with label and value.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value to use for the template ID. Useful when this stage is used within a conditional pipeline such as match. Mutually exclusive with label and source.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"timestamp\": {\n \"description\": \"Timestamp is an action stage that can change the timestamp of a log line before it is sent to Loki. If not present, the timestamp of a log line defaults to the time when the log line was read.\",\n \"properties\": {\n \"actionOnFailure\": {\n \"description\": \"Action to take when the timestamp can't be extracted or parsed. Can be skip or fudge. Defaults to fudge.\",\n \"type\": \"string\"\n },\n \"fallbackFormats\": {\n \"description\": \"Fallback formats to try if format fails.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"format\": {\n \"description\": \"Determines format of the time string. Required. Can be one of: ANSIC, UnixDate, RubyDate, RFC822, RFC822Z, RFC850, RFC1123, RFC1123Z, RFC3339, RFC3339Nano, Unix, UnixMs, UnixUs, UnixNs.\",\n \"type\": \"string\"\n },\n \"location\": {\n \"description\": \"IANA Timezone Database string.\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"Name from extracted data to use as the timestamp. Required.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"format\",\n \"source\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"podTargetLabels\": {\n \"description\": \"PodTargetLabels transfers labels on the Kubernetes Pod onto the target.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"relabelings\": {\n \"description\": \"RelabelConfigs to apply to logs before delivering. Grafana Agent Operator automatically adds relabelings for a few standard Kubernetes fields and replaces original scrape job name with __tmp_logs_job_name. \\n More info: https://grafana.com/docs/loki/latest/clients/promtail/configuration/#relabel_configs\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines `\\u003cmetric_relabel_configs\\u003e`-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\",\n \"properties\": {\n \"action\": {\n \"default\": \"replace\",\n \"description\": \"Action to perform based on regex matching. Default is 'replace'. uppercase and lowercase actions require Prometheus \\u003e= 2.36.\",\n \"enum\": [\n \"replace\",\n \"Replace\",\n \"keep\",\n \"Keep\",\n \"drop\",\n \"Drop\",\n \"hashmod\",\n \"HashMod\",\n \"labelmap\",\n \"LabelMap\",\n \"labeldrop\",\n \"LabelDrop\",\n \"labelkeep\",\n \"LabelKeep\",\n \"lowercase\",\n \"Lowercase\",\n \"uppercase\",\n \"Uppercase\",\n \"keepequal\",\n \"KeepEqual\",\n \"dropequal\",\n \"DropEqual\"\n ],\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"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.\",\n \"items\": {\n \"description\": \"LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\",\n \"pattern\": \"^[a-zA-Z_][a-zA-Z0-9_]*$\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"selector\": {\n \"description\": \"Selector to select Pod objects. Required.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"selector\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Pod Logs\",\n \"type\": \"object\"\n}", + "version": "monitoring.grafana.com/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Pod Logs", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz" + }, + "model": { + "category": { + "name": "Uncategorized" + }, + "displayName": "Dnation Kubernetes Monitoring Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n" + }, + "model": { + "version": "3.6.2" + }, + "name": "dnation-kubernetes-monitoring-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Uncategorized", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"86\" height=\"62\" viewBox=\"0 0 86 62\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003ccircle cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"/\u003e\n\u003ccircle cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"/\u003e\n\u003ccircle cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"/\u003e\n\u003cpath d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"/\u003e\n\u003cpath d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"/\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"/\u003e\n\u003c/svg\u003e\r", + "svgWhite": "\u003csvg width=\"86\" height=\"62\" viewBox=\"0 0 86 62\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003ccircle cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003cpath d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M34 62V34H40V62H34Z\" fill=\"white\"/\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"/\u003e\n\u003c/svg\u003e\r" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/PodMonitor.json b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/PodMonitor.json new file mode 100644 index 00000000000..a5053cefa59 --- /dev/null +++ b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/PodMonitor.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "PodMonitor", + "schema": "{\n \"description\": \"PodMonitor defines monitoring for a set of pods.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"Specification of desired Pod selection for target discovery by Prometheus.\",\n \"properties\": {\n \"attachMetadata\": {\n \"description\": \"Attaches node metadata to discovered targets. Requires Prometheus v2.35.0 and above.\",\n \"properties\": {\n \"node\": {\n \"description\": \"When set to true, Prometheus must have permissions to get Nodes.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"jobLabel\": {\n \"description\": \"The label to use to retrieve the job name from.\",\n \"type\": \"string\"\n },\n \"keepDroppedTargets\": {\n \"description\": \"Per-scrape limit on the number of targets dropped by relabeling that will be kept in memory. 0 means no limit. \\n It requires Prometheus \\u003e= v2.47.0.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"labelLimit\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"labelNameLengthLimit\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"labelValueLengthLimit\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"namespaceSelector\": {\n \"description\": \"Selector to select which namespaces the Endpoints objects are discovered from.\",\n \"properties\": {\n \"any\": {\n \"description\": \"Boolean describing whether all namespaces are selected in contrast to a list restricting them.\",\n \"type\": \"boolean\"\n },\n \"matchNames\": {\n \"description\": \"List of namespace names to select from.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podMetricsEndpoints\": {\n \"description\": \"A list of endpoints allowed as part of this PodMonitor.\",\n \"items\": {\n \"description\": \"PodMetricsEndpoint defines a scrapeable endpoint of a Kubernetes Pod serving Prometheus metrics.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization section for this endpoint\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication. More info: https://prometheus.io/docs/operating/configuration/#endpoint\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenSecret\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"enableHttp2\": {\n \"description\": \"Whether to enable HTTP2.\",\n \"type\": \"boolean\"\n },\n \"filterRunning\": {\n \"description\": \"Drop pods that are not running. (Failed, Succeeded). Enabled by default. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase\",\n \"type\": \"boolean\"\n },\n \"followRedirects\": {\n \"description\": \"FollowRedirects configures whether scrape requests follow HTTP 3xx redirects.\",\n \"type\": \"boolean\"\n },\n \"honorLabels\": {\n \"description\": \"HonorLabels chooses the metric's labels on collisions with target labels.\",\n \"type\": \"boolean\"\n },\n \"honorTimestamps\": {\n \"description\": \"HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data.\",\n \"type\": \"boolean\"\n },\n \"interval\": {\n \"description\": \"Interval at which metrics should be scraped If not specified Prometheus' global scrape interval is used.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"metricRelabelings\": {\n \"description\": \"MetricRelabelConfigs to apply to samples before ingestion.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\",\n \"properties\": {\n \"action\": {\n \"default\": \"replace\",\n \"description\": \"Action to perform based on the regex matching. \\n `Uppercase` and `Lowercase` actions require Prometheus \\u003e= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus \\u003e= v2.41.0. \\n Default: \\\"Replace\\\"\",\n \"enum\": [\n \"replace\",\n \"Replace\",\n \"keep\",\n \"Keep\",\n \"drop\",\n \"Drop\",\n \"hashmod\",\n \"HashMod\",\n \"labelmap\",\n \"LabelMap\",\n \"labeldrop\",\n \"LabelDrop\",\n \"labelkeep\",\n \"LabelKeep\",\n \"lowercase\",\n \"Lowercase\",\n \"uppercase\",\n \"Uppercase\",\n \"keepequal\",\n \"KeepEqual\",\n \"dropequal\",\n \"DropEqual\"\n ],\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values. \\n Only applicable when the action is `HashMod`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched.\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a Replace action is performed if the regular expression matches. \\n Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator is the string between concatenated SourceLabels.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.\",\n \"items\": {\n \"description\": \"LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\",\n \"pattern\": \"^[a-zA-Z_][a-zA-Z0-9_]*$\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting string is written in a replacement. \\n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \\n Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 for the URL. Only valid in Prometheus versions 2.27.0 and newer.\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"params\": {\n \"additionalProperties\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"description\": \"Optional HTTP URL parameters\",\n \"type\": \"object\"\n },\n \"path\": {\n \"description\": \"HTTP path to scrape for metrics. If empty, Prometheus uses the default value (e.g. `/metrics`).\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Name of the pod port this endpoint refers to. Mutually exclusive with targetPort.\",\n \"type\": \"string\"\n },\n \"proxyUrl\": {\n \"description\": \"ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint.\",\n \"type\": \"string\"\n },\n \"relabelings\": {\n \"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\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\",\n \"properties\": {\n \"action\": {\n \"default\": \"replace\",\n \"description\": \"Action to perform based on the regex matching. \\n `Uppercase` and `Lowercase` actions require Prometheus \\u003e= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus \\u003e= v2.41.0. \\n Default: \\\"Replace\\\"\",\n \"enum\": [\n \"replace\",\n \"Replace\",\n \"keep\",\n \"Keep\",\n \"drop\",\n \"Drop\",\n \"hashmod\",\n \"HashMod\",\n \"labelmap\",\n \"LabelMap\",\n \"labeldrop\",\n \"LabelDrop\",\n \"labelkeep\",\n \"LabelKeep\",\n \"lowercase\",\n \"Lowercase\",\n \"uppercase\",\n \"Uppercase\",\n \"keepequal\",\n \"KeepEqual\",\n \"dropequal\",\n \"DropEqual\"\n ],\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values. \\n Only applicable when the action is `HashMod`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched.\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a Replace action is performed if the regular expression matches. \\n Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator is the string between concatenated SourceLabels.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.\",\n \"items\": {\n \"description\": \"LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\",\n \"pattern\": \"^[a-zA-Z_][a-zA-Z0-9_]*$\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting string is written in a replacement. \\n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \\n Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"scheme\": {\n \"description\": \"HTTP scheme to use for scraping. `http` and `https` are the expected values unless you rewrite the `__scheme__` label via relabeling. If empty, Prometheus uses the default value `http`.\",\n \"enum\": [\n \"http\",\n \"https\"\n ],\n \"type\": \"string\"\n },\n \"scrapeTimeout\": {\n \"description\": \"Timeout after which the scrape is ended If not specified, the Prometheus global scrape interval is used.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"targetPort\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Deprecated: Use 'port' instead.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration to use when scraping the endpoint.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"podTargetLabels\": {\n \"description\": \"PodTargetLabels transfers labels on the Kubernetes Pod onto the target.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"sampleLimit\": {\n \"description\": \"SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"selector\": {\n \"description\": \"Selector to select Pod objects.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetLimit\": {\n \"description\": \"TargetLimit defines a limit on the number of scraped targets that will be accepted.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podMetricsEndpoints\",\n \"selector\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"title\": \"Pod Monitor\",\n \"type\": \"object\"\n}", + "version": "monitoring.coreos.com/v1" + }, + "configuration": null, + "description": "", + "displayName": "Pod Monitor", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz" + }, + "model": { + "category": { + "name": "Uncategorized" + }, + "displayName": "Dnation Kubernetes Monitoring Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n" + }, + "model": { + "version": "3.6.2" + }, + "name": "dnation-kubernetes-monitoring-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Uncategorized", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#F15B2A", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 103.7 112.7\" style=\"enable-background:new 0 0 103.7 112.7;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n .st0{fill:url(#SVGID_1_);}\n\u003c/style\u003e\n\u003clinearGradient id=\"SVGID_1_\" gradientUnits=\"userSpaceOnUse\" x1=\"51.85\" y1=\"1069.5107\" x2=\"51.85\" y2=\"966.6585\" gradientTransform=\"matrix(1 0 0 1 0 -931.4)\"\u003e\n \u003cstop offset=\"0\" style=\"stop-color:#FCEE1F\"/\u003e\n \u003cstop offset=\"1\" style=\"stop-color:#F15B2A\"/\u003e\n\u003c/linearGradient\u003e\n\u003cpath class=\"st0\" d=\"M103.5,49.9c-0.2-1.9-0.5-4.1-1.1-6.5c-0.6-2.4-1.6-5-2.9-7.8c-1.4-2.7-3.1-5.6-5.4-8.3\n c-0.9-1.1-1.9-2.1-2.9-3.2c1.6-6.3-1.9-11.8-1.9-11.8c-6.1-0.4-9.9,1.9-11.3,2.9c-0.2-0.1-0.5-0.2-0.7-0.3c-1-0.4-2.1-0.8-3.2-1.2\n c-1.1-0.3-2.2-0.7-3.3-0.9c-1.1-0.3-2.3-0.5-3.5-0.7c-0.2,0-0.4-0.1-0.6-0.1C64.1,3.6,56.5,0,56.5,0c-8.7,5.6-10.4,13.1-10.4,13.1\n s0,0.2-0.1,0.4c-0.5,0.1-0.9,0.3-1.4,0.4c-0.6,0.2-1.3,0.4-1.9,0.7c-0.6,0.3-1.3,0.5-1.9,0.8c-1.3,0.6-2.5,1.2-3.8,1.9\n c-1.2,0.7-2.4,1.4-3.5,2.2c-0.2-0.1-0.3-0.2-0.3-0.2c-11.7-4.5-22.1,0.9-22.1,0.9c-0.9,12.5,4.7,20.3,5.8,21.7\n c-0.3,0.8-0.5,1.5-0.8,2.3c-0.9,2.8-1.5,5.7-1.9,8.7c-0.1,0.4-0.1,0.9-0.2,1.3C3.2,59.5,0,70.5,0,70.5c9,10.4,19.6,11,19.6,11l0,0\n c1.3,2.4,2.9,4.7,4.6,6.8c0.7,0.9,1.5,1.7,2.3,2.6c-3.3,9.4,0.5,17.3,0.5,17.3c10.1,0.4,16.7-4.4,18.1-5.5c1,0.3,2,0.6,3,0.9\n c3.1,0.8,6.3,1.3,9.4,1.4c0.8,0,1.6,0,2.4,0h0.4h0.3h0.5h0.5l0,0c4.7,6.8,13.1,7.7,13.1,7.7c5.9-6.3,6.3-12.4,6.3-13.8l0,0\n c0,0,0,0,0-0.1s0-0.2,0-0.2l0,0c0-0.1,0-0.2,0-0.3c1.2-0.9,2.4-1.8,3.6-2.8c2.4-2.1,4.4-4.6,6.2-7.2c0.2-0.2,0.3-0.5,0.5-0.7\n c6.7,0.4,11.4-4.2,11.4-4.2c-1.1-7-5.1-10.4-5.9-11l0,0c0,0,0,0-0.1-0.1l-0.1-0.1l0,0l-0.1-0.1c0-0.4,0.1-0.8,0.1-1.3\n c0.1-0.8,0.1-1.5,0.1-2.3v-0.6v-0.3v-0.1c0-0.2,0-0.1,0-0.2v-0.5v-0.6c0-0.2,0-0.4,0-0.6s0-0.4-0.1-0.6l-0.1-0.6l-0.1-0.6\n c-0.1-0.8-0.3-1.5-0.4-2.3c-0.7-3-1.9-5.9-3.4-8.4c-1.6-2.6-3.5-4.8-5.7-6.8c-2.2-1.9-4.6-3.5-7.2-4.6c-2.6-1.2-5.2-1.9-7.9-2.2\n c-1.3-0.2-2.7-0.2-4-0.2h-0.5h-0.1H67h-0.2h-0.5c-0.2,0-0.4,0-0.5,0c-0.7,0.1-1.4,0.2-2,0.3c-2.7,0.5-5.2,1.5-7.4,2.8\n c-2.2,1.3-4.1,3-5.7,4.9s-2.8,3.9-3.6,6.1c-0.8,2.1-1.3,4.4-1.4,6.5c0,0.5,0,1.1,0,1.6c0,0.1,0,0.3,0,0.4v0.4c0,0.3,0,0.5,0.1,0.8\n c0.1,1.1,0.3,2.1,0.6,3.1c0.6,2,1.5,3.8,2.7,5.4s2.5,2.8,4,3.8s3,1.7,4.6,2.2s3.1,0.7,4.5,0.6c0.2,0,0.4,0,0.5,0s0.2,0,0.3,0\n s0.2,0,0.3,0c0.2,0,0.3,0,0.5,0h0.1H64c0.1,0,0.2,0,0.3,0c0.2,0,0.4-0.1,0.5-0.1c0.2,0,0.3-0.1,0.5-0.1c0.3-0.1,0.7-0.2,1-0.3\n c0.6-0.2,1.2-0.5,1.8-0.7c0.6-0.3,1.1-0.6,1.5-0.9c0.1-0.1,0.3-0.2,0.4-0.3c0.5-0.4,0.6-1.1,0.2-1.6c-0.4-0.4-1-0.5-1.5-0.3\n c-0.1,0.1-0.2,0.1-0.4,0.2c-0.4,0.2-0.9,0.4-1.3,0.5c-0.5,0.1-1,0.3-1.5,0.4c-0.3,0-0.5,0.1-0.8,0.1c-0.1,0-0.3,0-0.4,0\n c-0.1,0-0.3,0-0.4,0s-0.3,0-0.4,0c-0.2,0-0.3,0-0.5,0c0,0-0.1,0,0,0h-0.1h-0.1c-0.1,0-0.1,0-0.2,0s-0.3,0-0.4-0.1\n c-1.1-0.2-2.3-0.5-3.4-1s-2.2-1.2-3.1-2.1c-1-0.9-1.8-1.9-2.5-3.1s-1.1-2.5-1.3-3.8c-0.1-0.7-0.2-1.4-0.1-2.1c0-0.2,0-0.4,0-0.6\n c0,0.1,0,0,0,0v-0.1v-0.1c0-0.1,0-0.2,0-0.3c0-0.4,0.1-0.7,0.2-1.1c0.5-3,2-5.9,4.3-8.1c0.6-0.6,1.2-1.1,1.9-1.5\n c0.7-0.5,1.4-0.9,2.1-1.2s1.5-0.6,2.3-0.8s1.6-0.4,2.4-0.4c0.4,0,0.8-0.1,1.2-0.1c0.1,0,0.2,0,0.3,0h0.3H67c0.1,0,0,0,0,0h0.1h0.3\n c0.9,0.1,1.8,0.2,2.6,0.4c1.7,0.4,3.4,1,5,1.9c3.2,1.8,5.9,4.5,7.5,7.8c0.8,1.6,1.4,3.4,1.7,5.3c0.1,0.5,0.1,0.9,0.2,1.4v0.3V66\n c0,0.1,0,0.2,0,0.3c0,0.1,0,0.2,0,0.3v0.3v0.3c0,0.2,0,0.6,0,0.8c0,0.5-0.1,1-0.1,1.5c-0.1,0.5-0.1,1-0.2,1.5\n c-0.1,0.5-0.2,1-0.3,1.5c-0.2,1-0.6,1.9-0.9,2.9c-0.7,1.9-1.7,3.7-2.9,5.3c-2.4,3.3-5.7,6-9.4,7.7c-1.9,0.8-3.8,1.5-5.8,1.8\n c-1,0.2-2,0.3-3,0.3h-0.2h-0.2h-0.3h-0.5h-0.3c0.1,0,0,0,0,0h-0.1c-0.5,0-1.1,0-1.6-0.1c-2.2-0.2-4.3-0.6-6.4-1.2s-4.1-1.4-6-2.4\n c-3.8-2-7.2-4.9-9.9-8.2c-1.3-1.7-2.5-3.5-3.5-5.4s-1.7-3.9-2.3-5.9s-0.9-4.1-1-6.2v-0.4v-0.1v-0.1v-0.2V60v-0.1v-0.1v-0.2v-0.5V59\n l0,0v-0.2c0-0.3,0-0.5,0-0.8c0-1,0.1-2.1,0.3-3.2c0.1-1.1,0.3-2.1,0.5-3.2c0.2-1.1,0.5-2.1,0.8-3.2c0.6-2.1,1.3-4.1,2.2-6\n c1.8-3.8,4.1-7.2,6.8-9.9c0.7-0.7,1.4-1.3,2.2-1.9c0.3-0.3,1-0.9,1.8-1.4s1.6-1,2.5-1.4c0.4-0.2,0.8-0.4,1.3-0.6\n c0.2-0.1,0.4-0.2,0.7-0.3c0.2-0.1,0.4-0.2,0.7-0.3c0.9-0.4,1.8-0.7,2.7-1c0.2-0.1,0.5-0.1,0.7-0.2s0.5-0.1,0.7-0.2\n c0.5-0.1,0.9-0.2,1.4-0.4c0.2-0.1,0.5-0.1,0.7-0.2c0.2,0,0.5-0.1,0.7-0.1s0.5-0.1,0.7-0.1l0.4-0.1l0.4-0.1c0.2,0,0.5-0.1,0.7-0.1\n c0.3,0,0.5-0.1,0.8-0.1c0.2,0,0.6-0.1,0.8-0.1c0.2,0,0.3,0,0.5-0.1h0.3H61h0.2c0.3,0,0.5,0,0.8-0.1h0.4c0,0,0.1,0,0,0h0.1h0.2\n c0.2,0,0.5,0,0.7,0c0.9,0,1.8,0,2.7,0c1.8,0.1,3.6,0.3,5.3,0.6c3.4,0.6,6.7,1.7,9.6,3.2c2.9,1.4,5.6,3.2,7.8,5.1\n c0.1,0.1,0.3,0.2,0.4,0.4c0.1,0.1,0.3,0.2,0.4,0.4c0.3,0.2,0.5,0.5,0.8,0.7s0.5,0.5,0.8,0.7c0.2,0.3,0.5,0.5,0.7,0.8\n c1,1,1.9,2.1,2.7,3.1c1.6,2.1,2.9,4.2,3.9,6.2c0.1,0.1,0.1,0.2,0.2,0.4c0.1,0.1,0.1,0.2,0.2,0.4c0.1,0.2,0.2,0.5,0.4,0.7\n c0.1,0.2,0.2,0.5,0.3,0.7c0.1,0.2,0.2,0.5,0.3,0.7c0.4,0.9,0.7,1.8,1,2.7c0.5,1.4,0.8,2.6,1.1,3.6c0.1,0.4,0.5,0.7,0.9,0.7\n c0.5,0,0.8-0.4,0.8-0.9C103.6,52.7,103.6,51.4,103.5,49.9z\"/\u003e\n\u003c/svg\u003e\n", + "svgWhite": "\u003csvg width=\"86\" height=\"62\" viewBox=\"0 0 86 62\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003ccircle cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003cpath d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M34 62V34H40V62H34Z\" fill=\"white\"/\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"/\u003e\n\u003c/svg\u003e\r" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/Probe.json b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/Probe.json new file mode 100644 index 00000000000..83e04758d3a --- /dev/null +++ b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/Probe.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "Probe", + "schema": "{\n \"description\": \"Probe defines monitoring for a set of static targets or ingresses.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"Specification of desired Ingress selection for target discovery by Prometheus.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization section for this endpoint\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication. More info: https://prometheus.io/docs/operating/configuration/#endpoint\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenSecret\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"interval\": {\n \"description\": \"Interval at which targets are probed using the configured prober. If not specified Prometheus' global scrape interval is used.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"jobName\": {\n \"description\": \"The job name assigned to scraped metrics by default.\",\n \"type\": \"string\"\n },\n \"keepDroppedTargets\": {\n \"description\": \"Per-scrape limit on the number of targets dropped by relabeling that will be kept in memory. 0 means no limit. \\n It requires Prometheus \\u003e= v2.47.0.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"labelLimit\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"labelNameLengthLimit\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"labelValueLengthLimit\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"metricRelabelings\": {\n \"description\": \"MetricRelabelConfigs to apply to samples before ingestion.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\",\n \"properties\": {\n \"action\": {\n \"default\": \"replace\",\n \"description\": \"Action to perform based on the regex matching. \\n `Uppercase` and `Lowercase` actions require Prometheus \\u003e= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus \\u003e= v2.41.0. \\n Default: \\\"Replace\\\"\",\n \"enum\": [\n \"replace\",\n \"Replace\",\n \"keep\",\n \"Keep\",\n \"drop\",\n \"Drop\",\n \"hashmod\",\n \"HashMod\",\n \"labelmap\",\n \"LabelMap\",\n \"labeldrop\",\n \"LabelDrop\",\n \"labelkeep\",\n \"LabelKeep\",\n \"lowercase\",\n \"Lowercase\",\n \"uppercase\",\n \"Uppercase\",\n \"keepequal\",\n \"KeepEqual\",\n \"dropequal\",\n \"DropEqual\"\n ],\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values. \\n Only applicable when the action is `HashMod`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched.\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a Replace action is performed if the regular expression matches. \\n Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator is the string between concatenated SourceLabels.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.\",\n \"items\": {\n \"description\": \"LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\",\n \"pattern\": \"^[a-zA-Z_][a-zA-Z0-9_]*$\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting string is written in a replacement. \\n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \\n Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"module\": {\n \"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\",\n \"type\": \"string\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 for the URL. Only valid in Prometheus versions 2.27.0 and newer.\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"prober\": {\n \"description\": \"Specification for the prober to use for probing targets. The prober.URL parameter is required. Targets cannot be probed if left empty.\",\n \"properties\": {\n \"path\": {\n \"default\": \"/probe\",\n \"description\": \"Path to collect metrics from. Defaults to `/probe`.\",\n \"type\": \"string\"\n },\n \"proxyUrl\": {\n \"description\": \"Optional ProxyURL.\",\n \"type\": \"string\"\n },\n \"scheme\": {\n \"description\": \"HTTP scheme to use for scraping. `http` and `https` are the expected values unless you rewrite the `__scheme__` label via relabeling. If empty, Prometheus uses the default value `http`.\",\n \"enum\": [\n \"http\",\n \"https\"\n ],\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Mandatory URL of the prober.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"sampleLimit\": {\n \"description\": \"SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"scrapeTimeout\": {\n \"description\": \"Timeout for scraping metrics from the Prometheus exporter. If not specified, the Prometheus global scrape timeout is used.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"targetLimit\": {\n \"description\": \"TargetLimit defines a limit on the number of scraped targets that will be accepted.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"targets\": {\n \"description\": \"Targets defines a set of static or dynamically discovered targets to probe.\",\n \"properties\": {\n \"ingress\": {\n \"description\": \"ingress defines the Ingress objects to probe and the relabeling configuration. If `staticConfig` is also defined, `staticConfig` takes precedence.\",\n \"properties\": {\n \"namespaceSelector\": {\n \"description\": \"From which namespaces to select Ingress objects.\",\n \"properties\": {\n \"any\": {\n \"description\": \"Boolean describing whether all namespaces are selected in contrast to a list restricting them.\",\n \"type\": \"boolean\"\n },\n \"matchNames\": {\n \"description\": \"List of namespace names to select from.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"relabelingConfigs\": {\n \"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\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\",\n \"properties\": {\n \"action\": {\n \"default\": \"replace\",\n \"description\": \"Action to perform based on the regex matching. \\n `Uppercase` and `Lowercase` actions require Prometheus \\u003e= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus \\u003e= v2.41.0. \\n Default: \\\"Replace\\\"\",\n \"enum\": [\n \"replace\",\n \"Replace\",\n \"keep\",\n \"Keep\",\n \"drop\",\n \"Drop\",\n \"hashmod\",\n \"HashMod\",\n \"labelmap\",\n \"LabelMap\",\n \"labeldrop\",\n \"LabelDrop\",\n \"labelkeep\",\n \"LabelKeep\",\n \"lowercase\",\n \"Lowercase\",\n \"uppercase\",\n \"Uppercase\",\n \"keepequal\",\n \"KeepEqual\",\n \"dropequal\",\n \"DropEqual\"\n ],\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values. \\n Only applicable when the action is `HashMod`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched.\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a Replace action is performed if the regular expression matches. \\n Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator is the string between concatenated SourceLabels.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.\",\n \"items\": {\n \"description\": \"LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\",\n \"pattern\": \"^[a-zA-Z_][a-zA-Z0-9_]*$\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting string is written in a replacement. \\n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \\n Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"selector\": {\n \"description\": \"Selector to select the Ingress objects.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"staticConfig\": {\n \"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.\",\n \"properties\": {\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels assigned to all metrics scraped from the targets.\",\n \"type\": \"object\"\n },\n \"relabelingConfigs\": {\n \"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\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\",\n \"properties\": {\n \"action\": {\n \"default\": \"replace\",\n \"description\": \"Action to perform based on the regex matching. \\n `Uppercase` and `Lowercase` actions require Prometheus \\u003e= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus \\u003e= v2.41.0. \\n Default: \\\"Replace\\\"\",\n \"enum\": [\n \"replace\",\n \"Replace\",\n \"keep\",\n \"Keep\",\n \"drop\",\n \"Drop\",\n \"hashmod\",\n \"HashMod\",\n \"labelmap\",\n \"LabelMap\",\n \"labeldrop\",\n \"LabelDrop\",\n \"labelkeep\",\n \"LabelKeep\",\n \"lowercase\",\n \"Lowercase\",\n \"uppercase\",\n \"Uppercase\",\n \"keepequal\",\n \"KeepEqual\",\n \"dropequal\",\n \"DropEqual\"\n ],\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values. \\n Only applicable when the action is `HashMod`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched.\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a Replace action is performed if the regular expression matches. \\n Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator is the string between concatenated SourceLabels.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.\",\n \"items\": {\n \"description\": \"LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\",\n \"pattern\": \"^[a-zA-Z_][a-zA-Z0-9_]*$\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting string is written in a replacement. \\n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \\n Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"static\": {\n \"description\": \"The list of hosts to probe.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration to use when scraping the endpoint.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"title\": \"Probe\",\n \"type\": \"object\"\n}", + "version": "monitoring.coreos.com/v1" + }, + "configuration": null, + "description": "", + "displayName": "Probe", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz" + }, + "model": { + "category": { + "name": "Uncategorized" + }, + "displayName": "Dnation Kubernetes Monitoring Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n" + }, + "model": { + "version": "3.6.2" + }, + "name": "dnation-kubernetes-monitoring-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Uncategorized", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#F15B2A", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 103.7 112.7\" style=\"enable-background:new 0 0 103.7 112.7;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n .st0{fill:url(#SVGID_1_);}\n\u003c/style\u003e\n\u003clinearGradient id=\"SVGID_1_\" gradientUnits=\"userSpaceOnUse\" x1=\"51.85\" y1=\"1069.5107\" x2=\"51.85\" y2=\"966.6585\" gradientTransform=\"matrix(1 0 0 1 0 -931.4)\"\u003e\n \u003cstop offset=\"0\" style=\"stop-color:#FCEE1F\"/\u003e\n \u003cstop offset=\"1\" style=\"stop-color:#F15B2A\"/\u003e\n\u003c/linearGradient\u003e\n\u003cpath class=\"st0\" d=\"M103.5,49.9c-0.2-1.9-0.5-4.1-1.1-6.5c-0.6-2.4-1.6-5-2.9-7.8c-1.4-2.7-3.1-5.6-5.4-8.3\n c-0.9-1.1-1.9-2.1-2.9-3.2c1.6-6.3-1.9-11.8-1.9-11.8c-6.1-0.4-9.9,1.9-11.3,2.9c-0.2-0.1-0.5-0.2-0.7-0.3c-1-0.4-2.1-0.8-3.2-1.2\n c-1.1-0.3-2.2-0.7-3.3-0.9c-1.1-0.3-2.3-0.5-3.5-0.7c-0.2,0-0.4-0.1-0.6-0.1C64.1,3.6,56.5,0,56.5,0c-8.7,5.6-10.4,13.1-10.4,13.1\n s0,0.2-0.1,0.4c-0.5,0.1-0.9,0.3-1.4,0.4c-0.6,0.2-1.3,0.4-1.9,0.7c-0.6,0.3-1.3,0.5-1.9,0.8c-1.3,0.6-2.5,1.2-3.8,1.9\n c-1.2,0.7-2.4,1.4-3.5,2.2c-0.2-0.1-0.3-0.2-0.3-0.2c-11.7-4.5-22.1,0.9-22.1,0.9c-0.9,12.5,4.7,20.3,5.8,21.7\n c-0.3,0.8-0.5,1.5-0.8,2.3c-0.9,2.8-1.5,5.7-1.9,8.7c-0.1,0.4-0.1,0.9-0.2,1.3C3.2,59.5,0,70.5,0,70.5c9,10.4,19.6,11,19.6,11l0,0\n c1.3,2.4,2.9,4.7,4.6,6.8c0.7,0.9,1.5,1.7,2.3,2.6c-3.3,9.4,0.5,17.3,0.5,17.3c10.1,0.4,16.7-4.4,18.1-5.5c1,0.3,2,0.6,3,0.9\n c3.1,0.8,6.3,1.3,9.4,1.4c0.8,0,1.6,0,2.4,0h0.4h0.3h0.5h0.5l0,0c4.7,6.8,13.1,7.7,13.1,7.7c5.9-6.3,6.3-12.4,6.3-13.8l0,0\n c0,0,0,0,0-0.1s0-0.2,0-0.2l0,0c0-0.1,0-0.2,0-0.3c1.2-0.9,2.4-1.8,3.6-2.8c2.4-2.1,4.4-4.6,6.2-7.2c0.2-0.2,0.3-0.5,0.5-0.7\n c6.7,0.4,11.4-4.2,11.4-4.2c-1.1-7-5.1-10.4-5.9-11l0,0c0,0,0,0-0.1-0.1l-0.1-0.1l0,0l-0.1-0.1c0-0.4,0.1-0.8,0.1-1.3\n c0.1-0.8,0.1-1.5,0.1-2.3v-0.6v-0.3v-0.1c0-0.2,0-0.1,0-0.2v-0.5v-0.6c0-0.2,0-0.4,0-0.6s0-0.4-0.1-0.6l-0.1-0.6l-0.1-0.6\n c-0.1-0.8-0.3-1.5-0.4-2.3c-0.7-3-1.9-5.9-3.4-8.4c-1.6-2.6-3.5-4.8-5.7-6.8c-2.2-1.9-4.6-3.5-7.2-4.6c-2.6-1.2-5.2-1.9-7.9-2.2\n c-1.3-0.2-2.7-0.2-4-0.2h-0.5h-0.1H67h-0.2h-0.5c-0.2,0-0.4,0-0.5,0c-0.7,0.1-1.4,0.2-2,0.3c-2.7,0.5-5.2,1.5-7.4,2.8\n c-2.2,1.3-4.1,3-5.7,4.9s-2.8,3.9-3.6,6.1c-0.8,2.1-1.3,4.4-1.4,6.5c0,0.5,0,1.1,0,1.6c0,0.1,0,0.3,0,0.4v0.4c0,0.3,0,0.5,0.1,0.8\n c0.1,1.1,0.3,2.1,0.6,3.1c0.6,2,1.5,3.8,2.7,5.4s2.5,2.8,4,3.8s3,1.7,4.6,2.2s3.1,0.7,4.5,0.6c0.2,0,0.4,0,0.5,0s0.2,0,0.3,0\n s0.2,0,0.3,0c0.2,0,0.3,0,0.5,0h0.1H64c0.1,0,0.2,0,0.3,0c0.2,0,0.4-0.1,0.5-0.1c0.2,0,0.3-0.1,0.5-0.1c0.3-0.1,0.7-0.2,1-0.3\n c0.6-0.2,1.2-0.5,1.8-0.7c0.6-0.3,1.1-0.6,1.5-0.9c0.1-0.1,0.3-0.2,0.4-0.3c0.5-0.4,0.6-1.1,0.2-1.6c-0.4-0.4-1-0.5-1.5-0.3\n c-0.1,0.1-0.2,0.1-0.4,0.2c-0.4,0.2-0.9,0.4-1.3,0.5c-0.5,0.1-1,0.3-1.5,0.4c-0.3,0-0.5,0.1-0.8,0.1c-0.1,0-0.3,0-0.4,0\n c-0.1,0-0.3,0-0.4,0s-0.3,0-0.4,0c-0.2,0-0.3,0-0.5,0c0,0-0.1,0,0,0h-0.1h-0.1c-0.1,0-0.1,0-0.2,0s-0.3,0-0.4-0.1\n c-1.1-0.2-2.3-0.5-3.4-1s-2.2-1.2-3.1-2.1c-1-0.9-1.8-1.9-2.5-3.1s-1.1-2.5-1.3-3.8c-0.1-0.7-0.2-1.4-0.1-2.1c0-0.2,0-0.4,0-0.6\n c0,0.1,0,0,0,0v-0.1v-0.1c0-0.1,0-0.2,0-0.3c0-0.4,0.1-0.7,0.2-1.1c0.5-3,2-5.9,4.3-8.1c0.6-0.6,1.2-1.1,1.9-1.5\n c0.7-0.5,1.4-0.9,2.1-1.2s1.5-0.6,2.3-0.8s1.6-0.4,2.4-0.4c0.4,0,0.8-0.1,1.2-0.1c0.1,0,0.2,0,0.3,0h0.3H67c0.1,0,0,0,0,0h0.1h0.3\n c0.9,0.1,1.8,0.2,2.6,0.4c1.7,0.4,3.4,1,5,1.9c3.2,1.8,5.9,4.5,7.5,7.8c0.8,1.6,1.4,3.4,1.7,5.3c0.1,0.5,0.1,0.9,0.2,1.4v0.3V66\n c0,0.1,0,0.2,0,0.3c0,0.1,0,0.2,0,0.3v0.3v0.3c0,0.2,0,0.6,0,0.8c0,0.5-0.1,1-0.1,1.5c-0.1,0.5-0.1,1-0.2,1.5\n c-0.1,0.5-0.2,1-0.3,1.5c-0.2,1-0.6,1.9-0.9,2.9c-0.7,1.9-1.7,3.7-2.9,5.3c-2.4,3.3-5.7,6-9.4,7.7c-1.9,0.8-3.8,1.5-5.8,1.8\n c-1,0.2-2,0.3-3,0.3h-0.2h-0.2h-0.3h-0.5h-0.3c0.1,0,0,0,0,0h-0.1c-0.5,0-1.1,0-1.6-0.1c-2.2-0.2-4.3-0.6-6.4-1.2s-4.1-1.4-6-2.4\n c-3.8-2-7.2-4.9-9.9-8.2c-1.3-1.7-2.5-3.5-3.5-5.4s-1.7-3.9-2.3-5.9s-0.9-4.1-1-6.2v-0.4v-0.1v-0.1v-0.2V60v-0.1v-0.1v-0.2v-0.5V59\n l0,0v-0.2c0-0.3,0-0.5,0-0.8c0-1,0.1-2.1,0.3-3.2c0.1-1.1,0.3-2.1,0.5-3.2c0.2-1.1,0.5-2.1,0.8-3.2c0.6-2.1,1.3-4.1,2.2-6\n c1.8-3.8,4.1-7.2,6.8-9.9c0.7-0.7,1.4-1.3,2.2-1.9c0.3-0.3,1-0.9,1.8-1.4s1.6-1,2.5-1.4c0.4-0.2,0.8-0.4,1.3-0.6\n c0.2-0.1,0.4-0.2,0.7-0.3c0.2-0.1,0.4-0.2,0.7-0.3c0.9-0.4,1.8-0.7,2.7-1c0.2-0.1,0.5-0.1,0.7-0.2s0.5-0.1,0.7-0.2\n c0.5-0.1,0.9-0.2,1.4-0.4c0.2-0.1,0.5-0.1,0.7-0.2c0.2,0,0.5-0.1,0.7-0.1s0.5-0.1,0.7-0.1l0.4-0.1l0.4-0.1c0.2,0,0.5-0.1,0.7-0.1\n c0.3,0,0.5-0.1,0.8-0.1c0.2,0,0.6-0.1,0.8-0.1c0.2,0,0.3,0,0.5-0.1h0.3H61h0.2c0.3,0,0.5,0,0.8-0.1h0.4c0,0,0.1,0,0,0h0.1h0.2\n c0.2,0,0.5,0,0.7,0c0.9,0,1.8,0,2.7,0c1.8,0.1,3.6,0.3,5.3,0.6c3.4,0.6,6.7,1.7,9.6,3.2c2.9,1.4,5.6,3.2,7.8,5.1\n c0.1,0.1,0.3,0.2,0.4,0.4c0.1,0.1,0.3,0.2,0.4,0.4c0.3,0.2,0.5,0.5,0.8,0.7s0.5,0.5,0.8,0.7c0.2,0.3,0.5,0.5,0.7,0.8\n c1,1,1.9,2.1,2.7,3.1c1.6,2.1,2.9,4.2,3.9,6.2c0.1,0.1,0.1,0.2,0.2,0.4c0.1,0.1,0.1,0.2,0.2,0.4c0.1,0.2,0.2,0.5,0.4,0.7\n c0.1,0.2,0.2,0.5,0.3,0.7c0.1,0.2,0.2,0.5,0.3,0.7c0.4,0.9,0.7,1.8,1,2.7c0.5,1.4,0.8,2.6,1.1,3.6c0.1,0.4,0.5,0.7,0.9,0.7\n c0.5,0,0.8-0.4,0.8-0.9C103.6,52.7,103.6,51.4,103.5,49.9z\"/\u003e\n\u003c/svg\u003e\n", + "svgWhite": "\u003csvg width=\"86\" height=\"62\" viewBox=\"0 0 86 62\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003ccircle cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003cpath d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M34 62V34H40V62H34Z\" fill=\"white\"/\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"/\u003e\n\u003c/svg\u003e\r" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/Prometheus.json b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/Prometheus.json new file mode 100644 index 00000000000..b0f5c78e9f6 --- /dev/null +++ b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/Prometheus.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "Prometheus", + "schema": "{\n \"description\": \"Prometheus defines a Prometheus deployment.\",\n \"properties\": {\n \"spec\": {\n \"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\",\n \"properties\": {\n \"additionalAlertManagerConfigs\": {\n \"description\": \"AdditionalAlertManagerConfigs specifies a key of a Secret containing additional Prometheus Alertmanager configurations. The Alertmanager configurations are appended to the configuration generated by the Prometheus Operator. They must be formatted according to the official Prometheus documentation: \\n https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alertmanager_config \\n The user is responsible for making sure that the configurations are valid \\n 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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"additionalAlertRelabelConfigs\": {\n \"description\": \"AdditionalAlertRelabelConfigs specifies a key of a Secret containing additional Prometheus alert relabel configurations. The alert relabel configurations are appended to the configuration generated by the Prometheus Operator. They must be formatted according to the official Prometheus documentation: \\n https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs \\n The user is responsible for making sure that the configurations are valid \\n 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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"additionalArgs\": {\n \"description\": \"AdditionalArgs allows setting additional arguments for the 'prometheus' container. \\n 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 supported by the given Prometheus version. \\n 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.\",\n \"items\": {\n \"description\": \"Argument as part of the AdditionalArgs list.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the argument, e.g. \\\"scrape.discovery-reload-interval\\\".\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Argument value, e.g. 30s. Can be empty for name-only arguments (e.g. --storage.tsdb.no-lockfile)\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"additionalScrapeConfigs\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"affinity\": {\n \"description\": \"Defines the Pods' affinity scheduling rules if specified.\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"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).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"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 \\u003ctopologyKey\\u003e matches that of any node on which a pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"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 \\u003ctopologyKey\\u003e matches that of any node on which a pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"alerting\": {\n \"description\": \"Defines the settings related to Alertmanager.\",\n \"properties\": {\n \"alertmanagers\": {\n \"description\": \"AlertmanagerEndpoints Prometheus should fire alerts against.\",\n \"items\": {\n \"description\": \"AlertmanagerEndpoints defines a selection of a single Endpoints object containing Alertmanager IPs to fire alerts against.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the Alertmanager API that Prometheus uses to send alerts. It can be \\\"v1\\\" or \\\"v2\\\".\",\n \"type\": \"string\"\n },\n \"authorization\": {\n \"description\": \"Authorization section for Alertmanager. \\n Cannot be set at the same time as `basicAuth`, `bearerTokenFile` or `sigv4`.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth configuration for Alertmanager. \\n Cannot be set at the same time as `bearerTokenFile`, `authorization` or `sigv4`.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenFile\": {\n \"description\": \"File to read bearer token for Alertmanager. \\n Cannot be set at the same time as `basicAuth`, `authorization`, or `sigv4`. \\n *Deprecated: this will be removed in a future release. Prefer using `authorization`.*\",\n \"type\": \"string\"\n },\n \"enableHttp2\": {\n \"description\": \"Whether to enable HTTP2.\",\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"Name of the Endpoints object in the namespace.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the Endpoints object.\",\n \"type\": \"string\"\n },\n \"pathPrefix\": {\n \"description\": \"Prefix for the HTTP path alerts are pushed to.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Port on which the Alertmanager API is exposed.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use when firing alerts.\",\n \"type\": \"string\"\n },\n \"sigv4\": {\n \"description\": \"Sigv4 allows to configures AWS's Signature Verification 4 for the URL. \\n It requires Prometheus \\u003e= v2.48.0. \\n Cannot be set at the same time as `basicAuth`, `bearerTokenFile` or `authorization`.\",\n \"properties\": {\n \"accessKey\": {\n \"description\": \"AccessKey is the AWS API key. If not specified, the environment variable `AWS_ACCESS_KEY_ID` is used.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"profile\": {\n \"description\": \"Profile is the named AWS profile used to authenticate.\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"Region is the AWS region. If blank, the region from the default credentials chain used.\",\n \"type\": \"string\"\n },\n \"roleArn\": {\n \"description\": \"RoleArn is the named AWS profile used to authenticate.\",\n \"type\": \"string\"\n },\n \"secretKey\": {\n \"description\": \"SecretKey is the AWS API secret. If not specified, the environment variable `AWS_SECRET_ACCESS_KEY` is used.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"timeout\": {\n \"description\": \"Timeout is a per-target Alertmanager timeout when pushing alerts.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS Config to use for Alertmanager.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the Prometheus container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\",\n \"namespace\",\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"alertmanagers\"\n ],\n \"type\": \"object\"\n },\n \"allowOverlappingBlocks\": {\n \"description\": \"AllowOverlappingBlocks enables vertical compaction and vertical query merge in Prometheus. \\n *Deprecated: this flag has no effect for Prometheus \\u003e= 2.39.0 where overlapping blocks are enabled by default.*\",\n \"type\": \"boolean\"\n },\n \"apiserverConfig\": {\n \"description\": \"APIServerConfig allows specifying a host and auth methods to access the Kuberntees API server. If null, Prometheus is assumed to run inside of the cluster: it will discover the API servers automatically and use the Pod's CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization section for the API server. \\n Cannot be set at the same time as `basicAuth`, `bearerToken`, or `bearerTokenFile`.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"credentialsFile\": {\n \"description\": \"File to read a secret from, mutually exclusive with `credentials`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth configuration for the API server. \\n Cannot be set at the same time as `authorization`, `bearerToken`, or `bearerTokenFile`.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerToken\": {\n \"description\": \"*Warning: this field shouldn't be used because the token value appears in clear-text. Prefer using `authorization`.* \\n *Deprecated: this will be removed in a future release.*\",\n \"type\": \"string\"\n },\n \"bearerTokenFile\": {\n \"description\": \"File to read bearer token for accessing apiserver. \\n Cannot be set at the same time as `basicAuth`, `authorization`, or `bearerToken`. \\n *Deprecated: this will be removed in a future release. Prefer using `authorization`.*\",\n \"type\": \"string\"\n },\n \"host\": {\n \"description\": \"Kubernetes API address consisting of a hostname or IP address followed by an optional port number.\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS Config to use for the API server.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the Prometheus container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"host\"\n ],\n \"type\": \"object\"\n },\n \"arbitraryFSAccessThroughSMs\": {\n \"description\": \"When true, ServiceMonitor, PodMonitor and Probe object are forbidden to reference arbitrary files on the file system of the 'prometheus' container. When a ServiceMonitor's endpoint specifies a `bearerTokenFile` value (e.g. '/var/run/secrets/kubernetes.io/serviceaccount/token'), a malicious target can get access to the Prometheus service account's token in the Prometheus' scrape request. Setting `spec.arbitraryFSAccessThroughSM` to 'true' would prevent the attack. Users should instead provide the credentials using the `spec.bearerTokenSecret` field.\",\n \"properties\": {\n \"deny\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"baseImage\": {\n \"description\": \"*Deprecated: use 'spec.image' instead.*\",\n \"type\": \"string\"\n },\n \"bodySizeLimit\": {\n \"description\": \"BodySizeLimit defines per-scrape on response body size. Only valid in Prometheus versions 2.45.0 and newer.\",\n \"pattern\": \"(^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$\",\n \"type\": \"string\"\n },\n \"configMaps\": {\n \"description\": \"ConfigMaps is a list of ConfigMaps in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. Each ConfigMap is added to the StatefulSet definition as a volume named `configmap-\\u003cconfigmap-name\\u003e`. The ConfigMaps are mounted into /etc/prometheus/configmaps/\\u003cconfigmap-name\\u003e in the 'prometheus' container.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"containers\": {\n \"description\": \"Containers allows injecting additional containers or modifying operator generated containers. This can be used to allow adding an authentication proxy to the Pods 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. \\n The names of containers managed by the operator are: * `prometheus` * `config-reloader` * `thanos-sidecar` \\n 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.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container. Cannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"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 \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"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.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"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.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"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\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events. Cannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"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.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"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.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"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.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host. If specified, this must be a valid port number, 0 \\u003c x \\u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod. This field may only be set for init containers, and the only allowed value is \\\"Always\\\". For non-init containers or when this field is not specified, the restart behavior is defined by the Pod's restart policy and the container type. Setting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect: this init container will be continually restarted on exit until all regular containers have terminated. Once all regular containers have completed, all init containers with restartPolicy \\\"Always\\\" will be shut down. This lifecycle differs from normal init containers and is often referred to as a \\\"sidecar\\\" container. Although this init container still starts in the init container sequence, it does not wait for the container to complete before proceeding to the next init container. Instead, the next init container starts immediately after this init container is started, or after any startupProbe has successfully completed.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"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/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"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.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"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.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are provided at both the pod \\u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"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 be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"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.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. 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.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Cannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"disableCompaction\": {\n \"description\": \"When true, the Prometheus compaction is disabled.\",\n \"type\": \"boolean\"\n },\n \"enableAdminAPI\": {\n \"description\": \"Enables access to the Prometheus web admin API. \\n 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. \\n For more information: https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis\",\n \"type\": \"boolean\"\n },\n \"enableFeatures\": {\n \"description\": \"Enable access to Prometheus feature flags. By default, no features are enabled. \\n Enabling features which are disabled by default 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. \\n For more information see https://prometheus.io/docs/prometheus/latest/feature_flags/\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"enableRemoteWriteReceiver\": {\n \"description\": \"Enable Prometheus to be used as a receiver for the Prometheus remote write protocol. \\n 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 \\n It requires Prometheus \\u003e= v2.33.0.\",\n \"type\": \"boolean\"\n },\n \"enforcedBodySizeLimit\": {\n \"description\": \"When defined, enforcedBodySizeLimit specifies a global limit on the 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. \\n It requires Prometheus \\u003e= v2.28.0.\",\n \"pattern\": \"(^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$\",\n \"type\": \"string\"\n },\n \"enforcedKeepDroppedTargets\": {\n \"description\": \"When defined, enforcedKeepDroppedTargets specifies a global limit on the number of targets dropped by relabeling that will be kept in memory. The value overrides any `spec.keepDroppedTargets` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.keepDroppedTargets` is greater than zero and less than `spec.enforcedKeepDroppedTargets`. \\n It requires Prometheus \\u003e= v2.47.0.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"enforcedLabelLimit\": {\n \"description\": \"When defined, enforcedLabelLimit specifies a global limit on the number of labels per sample. The value overrides any `spec.labelLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.labelLimit` is greater than zero and less than `spec.enforcedLabelLimit`. \\n It requires Prometheus \\u003e= v2.27.0.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"enforcedLabelNameLengthLimit\": {\n \"description\": \"When defined, enforcedLabelNameLengthLimit specifies a global limit on the length of labels name per sample. The value overrides any `spec.labelNameLengthLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.labelNameLengthLimit` is greater than zero and less than `spec.enforcedLabelNameLengthLimit`. \\n It requires Prometheus \\u003e= v2.27.0.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"enforcedLabelValueLengthLimit\": {\n \"description\": \"When not null, enforcedLabelValueLengthLimit defines a global limit on the length of labels value per sample. The value overrides any `spec.labelValueLengthLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.labelValueLengthLimit` is greater than zero and less than `spec.enforcedLabelValueLengthLimit`. \\n It requires Prometheus \\u003e= v2.27.0.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"enforcedNamespaceLabel\": {\n \"description\": \"When not empty, a label will be added to \\n 1. All metrics scraped from `ServiceMonitor`, `PodMonitor`, `Probe` and `ScrapeConfig` objects. 2. All metrics generated from recording rules defined in `PrometheusRule` objects. 3. All alerts generated from alerting rules defined in `PrometheusRule` objects. 4. All vector selectors of PromQL expressions defined in `PrometheusRule` objects. \\n The label will not added for objects referenced in `spec.excludedFromEnforcement`. \\n The label's name is this field's value. The label's value is the namespace of the `ServiceMonitor`, `PodMonitor`, `Probe` or `PrometheusRule` object.\",\n \"type\": \"string\"\n },\n \"enforcedSampleLimit\": {\n \"description\": \"When defined, enforcedSampleLimit specifies a global limit on the number of scraped samples that will be accepted. This overrides any `spec.sampleLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.sampleLimit` is greater than zero and less than than `spec.enforcedSampleLimit`. \\n It is meant to be used by admins to keep the overall number of samples/series under a desired limit.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"enforcedTargetLimit\": {\n \"description\": \"When defined, enforcedTargetLimit specifies a global limit on the number of scraped targets. The value overrides any `spec.targetLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.targetLimit` is greater than zero and less than `spec.enforcedTargetLimit`. \\n It is meant to be used by admins to to keep the overall number of targets under a desired limit.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"evaluationInterval\": {\n \"default\": \"30s\",\n \"description\": \"Interval between rule evaluations. Default: \\\"30s\\\"\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"excludedFromEnforcement\": {\n \"description\": \"List of references to PodMonitor, ServiceMonitor, Probe and PrometheusRule objects to be excluded from enforcing a namespace label of origin. \\n It is only applicable if `spec.enforcedNamespaceLabel` set to true.\",\n \"items\": {\n \"description\": \"ObjectReference references a PodMonitor, ServiceMonitor, Probe or PrometheusRule object.\",\n \"properties\": {\n \"group\": {\n \"default\": \"monitoring.coreos.com\",\n \"description\": \"Group of the referent. When not specified, it defaults to `monitoring.coreos.com`\",\n \"enum\": [\n \"monitoring.coreos.com\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. When not set, all resources in the namespace are matched.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"resource\": {\n \"description\": \"Resource of the referent.\",\n \"enum\": [\n \"prometheusrules\",\n \"servicemonitors\",\n \"podmonitors\",\n \"probes\",\n \"scrapeconfigs\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"namespace\",\n \"resource\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"exemplars\": {\n \"description\": \"Exemplars related settings that are runtime reloadable. It requires to enable the `exemplar-storage` feature flag to be effective.\",\n \"properties\": {\n \"maxSize\": {\n \"description\": \"Maximum number of exemplars stored in memory for all series. \\n exemplar-storage itself must be enabled using the `spec.enableFeature` option for exemplars to be scraped in the first place. \\n If not set, Prometheus uses its default value. A value of zero or less than zero disables the storage.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"externalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The labels to add to any time series or alerts when communicating with external systems (federation, remote storage, Alertmanager). Labels defined by `spec.replicaExternalLabelName` and `spec.prometheusExternalLabelName` take precedence over this list.\",\n \"type\": \"object\"\n },\n \"externalUrl\": {\n \"description\": \"The external URL under which the Prometheus service is externally available. This is necessary to generate correct URLs (for instance if Prometheus is accessible behind an Ingress resource).\",\n \"type\": \"string\"\n },\n \"hostAliases\": {\n \"description\": \"Optional list of hosts and IPs that will be injected into the Pod's hosts file if specified.\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"hostnames\",\n \"ip\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"ip\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostNetwork\": {\n \"description\": \"Use the host's network namespace if true. \\n Make sure to understand the security implications if you want to enable it (https://kubernetes.io/docs/concepts/configuration/overview/). \\n When hostNetwork is enabled, this will set the DNS policy to `ClusterFirstWithHostNet` automatically.\",\n \"type\": \"boolean\"\n },\n \"ignoreNamespaceSelectors\": {\n \"description\": \"When true, `spec.namespaceSelector` from all PodMonitor, ServiceMonitor and Probe objects will be ignored. They will only discover targets within the namespace of the PodMonitor, ServiceMonitor and Probe object.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Container image name for Prometheus. If specified, it takes precedence over the `spec.baseImage`, `spec.tag` and `spec.sha` fields. \\n Specifying `spec.version` is still necessary to ensure the Prometheus Operator knows which version of Prometheus is being configured. \\n If neither `spec.image` nor `spec.baseImage` are defined, the operator will use the latest upstream version of Prometheus available at the time when the operator was released.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy for the 'prometheus', 'init-config-reloader' and 'config-reloader' containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details.\",\n \"enum\": [\n \"\",\n \"Always\",\n \"Never\",\n \"IfNotPresent\"\n ],\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"An optional list of references to Secrets in the same namespace to use for pulling images from registries. See http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"initContainers\": {\n \"description\": \"InitContainers allows injecting 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. \\n The names of init container name managed by the operator are: * `init-config-reloader`. \\n 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.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container. Cannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"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 \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"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.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"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.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"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\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events. Cannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"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.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"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.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"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.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host. If specified, this must be a valid port number, 0 \\u003c x \\u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod. This field may only be set for init containers, and the only allowed value is \\\"Always\\\". For non-init containers or when this field is not specified, the restart behavior is defined by the Pod's restart policy and the container type. Setting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect: this init container will be continually restarted on exit until all regular containers have terminated. Once all regular containers have completed, all init containers with restartPolicy \\\"Always\\\" will be shut down. This lifecycle differs from normal init containers and is often referred to as a \\\"sidecar\\\" container. Although this init container still starts in the init container sequence, it does not wait for the container to complete before proceeding to the next init container. Instead, the next init container starts immediately after this init container is started, or after any startupProbe has successfully completed.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"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/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"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.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"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.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are provided at both the pod \\u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"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 be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"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.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. 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.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Cannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"keepDroppedTargets\": {\n \"description\": \"Per-scrape limit on the number of targets dropped by relabeling that will be kept in memory. 0 means no limit. \\n It requires Prometheus \\u003e= v2.47.0.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"labelLimit\": {\n \"description\": \"Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.45.0 and newer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"labelNameLengthLimit\": {\n \"description\": \"Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.45.0 and newer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"labelValueLengthLimit\": {\n \"description\": \"Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.45.0 and newer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"listenLocal\": {\n \"description\": \"When true, the Prometheus server listens on the loopback address instead of the Pod IP's address.\",\n \"type\": \"boolean\"\n },\n \"logFormat\": {\n \"description\": \"Log format for Log level for Prometheus and the config-reloader sidecar.\",\n \"enum\": [\n \"\",\n \"logfmt\",\n \"json\"\n ],\n \"type\": \"string\"\n },\n \"logLevel\": {\n \"description\": \"Log level for Prometheus and the config-reloader sidecar.\",\n \"enum\": [\n \"\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ],\n \"type\": \"string\"\n },\n \"minReadySeconds\": {\n \"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) \\n This is an alpha field from kubernetes 1.22 until 1.24 which requires enabling the StatefulSetMinReadySeconds feature gate.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Defines on which Nodes the Pods are scheduled.\",\n \"type\": \"object\"\n },\n \"overrideHonorLabels\": {\n \"description\": \"When true, Prometheus resolves label conflicts by renaming the labels in the scraped data to \\\"exported_\\u003clabel value\\u003e\\\" for all targets created from service and pod monitors. Otherwise the HonorLabels field of the service or pod monitor applies.\",\n \"type\": \"boolean\"\n },\n \"overrideHonorTimestamps\": {\n \"description\": \"When true, Prometheus ignores the timestamps for all the targets created from service and pod monitors. Otherwise the HonorTimestamps field of the service or pod monitor applies.\",\n \"type\": \"boolean\"\n },\n \"paused\": {\n \"description\": \"When a Prometheus deployment is paused, no actions except for deletion will be performed on the underlying objects.\",\n \"type\": \"boolean\"\n },\n \"podMetadata\": {\n \"description\": \"PodMetadata configures labels and annotations which are propagated to the Prometheus pods. \\n The following items are reserved and cannot be overridden: * \\\"prometheus\\\" label, set to the name of the Prometheus object. * \\\"app.kubernetes.io/instance\\\" label, set to the name of the Prometheus object. * \\\"app.kubernetes.io/managed-by\\\" label, set to \\\"prometheus-operator\\\". * \\\"app.kubernetes.io/name\\\" label, set to \\\"prometheus\\\". * \\\"app.kubernetes.io/version\\\" label, set to the Prometheus version. * \\\"operator.prometheus.io/name\\\" label, set to the name of the Prometheus object. * \\\"operator.prometheus.io/shard\\\" label, set to the shard number of the Prometheus object. * \\\"kubectl.kubernetes.io/default-container\\\" annotation, set to \\\"prometheus\\\".\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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\",\n \"type\": \"object\"\n },\n \"name\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"podMonitorNamespaceSelector\": {\n \"description\": \"Namespaces to match for PodMonitors discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"podMonitorSelector\": {\n \"description\": \"*Experimental* PodMonitors to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration's Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the `prometheus.yaml.gz` key. This behavior is *deprecated* and will be removed in the next major version of the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs` instead.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"podTargetLabels\": {\n \"description\": \"PodTargetLabels are appended to the `spec.podTargetLabels` field of all PodMonitor and ServiceMonitor objects.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"portName\": {\n \"default\": \"web\",\n \"description\": \"Port name used for the pods and governing service. Default: \\\"web\\\"\",\n \"type\": \"string\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class assigned to the Pods.\",\n \"type\": \"string\"\n },\n \"probeNamespaceSelector\": {\n \"description\": \"*Experimental* Namespaces to match for Probe discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"probeSelector\": {\n \"description\": \"*Experimental* Probes to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration's Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the `prometheus.yaml.gz` key. This behavior is *deprecated* and will be removed in the next major version of the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs` instead.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prometheusExternalLabelName\": {\n \"description\": \"Name of Prometheus external label used to denote the Prometheus instance name. The external label will _not_ be added when the field is set to the empty string (`\\\"\\\"`). \\n Default: \\\"prometheus\\\"\",\n \"type\": \"string\"\n },\n \"prometheusRulesExcludedFromEnforce\": {\n \"description\": \"Defines the list of PrometheusRule objects to which the namespace label enforcement doesn't apply. This is only relevant when `spec.enforcedNamespaceLabel` is set to true. *Deprecated: use `spec.excludedFromEnforcement` instead.*\",\n \"items\": {\n \"description\": \"PrometheusRuleExcludeConfig enables users to configure excluded PrometheusRule names and their namespaces to be ignored while enforcing namespace label for alerts and metrics.\",\n \"properties\": {\n \"ruleName\": {\n \"description\": \"Name of the excluded PrometheusRule object.\",\n \"type\": \"string\"\n },\n \"ruleNamespace\": {\n \"description\": \"Namespace of the excluded PrometheusRule object.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ruleName\",\n \"ruleNamespace\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"query\": {\n \"description\": \"QuerySpec defines the configuration of the Promethus query service.\",\n \"properties\": {\n \"lookbackDelta\": {\n \"description\": \"The delta difference allowed for retrieving metrics during expression evaluations.\",\n \"type\": \"string\"\n },\n \"maxConcurrency\": {\n \"description\": \"Number of concurrent queries that can be run at once.\",\n \"format\": \"int32\",\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"maxSamples\": {\n \"description\": \"Maximum number of samples a single query can load into memory. Note that queries will fail if they would load more samples than this into memory, so this also limits the number of samples a query can return.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"timeout\": {\n \"description\": \"Maximum time a query may take before being aborted.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"queryLogFile\": {\n \"description\": \"queryLogFile specifies where the file to which PromQL queries are logged. \\n If the filename has an empty path, e.g. 'query.log', The Prometheus Pods will mount the file into an emptyDir volume at `/var/log/prometheus`. If a full path is provided, e.g. '/var/log/prometheus/query.log', you must mount a volume in the specified directory and it must be writable. This is because the prometheus container runs with a read-only root filesystem for security reasons. Alternatively, the location can be set to a standard I/O stream, e.g. `/dev/stdout`, to log query information to the default Prometheus log stream.\",\n \"type\": \"string\"\n },\n \"remoteRead\": {\n \"description\": \"Defines the list of remote read configurations.\",\n \"items\": {\n \"description\": \"RemoteReadSpec defines the configuration for Prometheus to read back samples from a remote endpoint.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization section for the URL. \\n It requires Prometheus \\u003e= v2.26.0. \\n Cannot be set at the same time as `basicAuth`, or `oauth2`.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"credentialsFile\": {\n \"description\": \"File to read a secret from, mutually exclusive with `credentials`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth configuration for the URL. \\n Cannot be set at the same time as `authorization`, or `oauth2`.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerToken\": {\n \"description\": \"*Warning: this field shouldn't be used because the token value appears in clear-text. Prefer using `authorization`.* \\n *Deprecated: this will be removed in a future release.*\",\n \"type\": \"string\"\n },\n \"bearerTokenFile\": {\n \"description\": \"File from which to read the bearer token for the URL. \\n *Deprecated: this will be removed in a future release. Prefer using `authorization`.*\",\n \"type\": \"string\"\n },\n \"filterExternalLabels\": {\n \"description\": \"Whether to use the external labels as selectors for the remote read endpoint. \\n It requires Prometheus \\u003e= v2.34.0.\",\n \"type\": \"boolean\"\n },\n \"followRedirects\": {\n \"description\": \"Configure whether HTTP requests follow HTTP 3xx redirects. \\n It requires Prometheus \\u003e= v2.26.0.\",\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Custom HTTP headers to be sent along with each remote read request. Be aware that headers that are set by Prometheus itself can't be overwritten. Only valid in Prometheus versions 2.26.0 and newer.\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The name of the remote read queue, it must be unique if specified. The name is used in metrics and logging in order to differentiate read configurations. \\n It requires Prometheus \\u003e= v2.15.0.\",\n \"type\": \"string\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 configuration for the URL. \\n It requires Prometheus \\u003e= v2.27.0. \\n Cannot be set at the same time as `authorization`, or `basicAuth`.\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"proxyUrl\": {\n \"description\": \"Optional ProxyURL.\",\n \"type\": \"string\"\n },\n \"readRecent\": {\n \"description\": \"Whether reads should be made for queries for time ranges that the local storage should have complete data for.\",\n \"type\": \"boolean\"\n },\n \"remoteTimeout\": {\n \"description\": \"Timeout for requests to the remote read endpoint.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"requiredMatchers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"An optional list of equality matchers which have to be present in a selector to query the remote read endpoint.\",\n \"type\": \"object\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS Config to use for the URL.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the Prometheus container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"url\": {\n \"description\": \"The URL of the endpoint to query from.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"remoteWrite\": {\n \"description\": \"Defines the list of remote write configurations.\",\n \"items\": {\n \"description\": \"RemoteWriteSpec defines the configuration to write samples from Prometheus to a remote endpoint.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization section for the URL. \\n It requires Prometheus \\u003e= v2.26.0. \\n Cannot be set at the same time as `sigv4`, `basicAuth`, `oauth2`, or `azureAd`.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"credentialsFile\": {\n \"description\": \"File to read a secret from, mutually exclusive with `credentials`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"azureAd\": {\n \"description\": \"AzureAD for the URL. \\n It requires Prometheus \\u003e= v2.45.0. \\n Cannot be set at the same time as `authorization`, `basicAuth`, `oauth2`, or `sigv4`.\",\n \"properties\": {\n \"cloud\": {\n \"description\": \"The Azure Cloud. Options are 'AzurePublic', 'AzureChina', or 'AzureGovernment'.\",\n \"enum\": [\n \"AzureChina\",\n \"AzureGovernment\",\n \"AzurePublic\"\n ],\n \"type\": \"string\"\n },\n \"managedIdentity\": {\n \"description\": \"ManagedIdentity defines the Azure User-assigned Managed identity.\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The client id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"managedIdentity\"\n ],\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth configuration for the URL. \\n Cannot be set at the same time as `sigv4`, `authorization`, `oauth2`, or `azureAd`.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerToken\": {\n \"description\": \"*Warning: this field shouldn't be used because the token value appears in clear-text. Prefer using `authorization`.* \\n *Deprecated: this will be removed in a future release.*\",\n \"type\": \"string\"\n },\n \"bearerTokenFile\": {\n \"description\": \"File from which to read bearer token for the URL. \\n *Deprecated: this will be removed in a future release. Prefer using `authorization`.*\",\n \"type\": \"string\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Custom HTTP headers to be sent along with each remote write request. Be aware that headers that are set by Prometheus itself can't be overwritten. \\n It requires Prometheus \\u003e= v2.25.0.\",\n \"type\": \"object\"\n },\n \"metadataConfig\": {\n \"description\": \"MetadataConfig configures the sending of series metadata to the remote storage.\",\n \"properties\": {\n \"send\": {\n \"description\": \"Defines whether metric metadata is sent to the remote storage or not.\",\n \"type\": \"boolean\"\n },\n \"sendInterval\": {\n \"description\": \"Defines how frequently metric metadata is sent to the remote storage.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The name of the remote write queue, it must be unique if specified. The name is used in metrics and logging in order to differentiate queues. \\n It requires Prometheus \\u003e= v2.15.0.\",\n \"type\": \"string\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 configuration for the URL. \\n It requires Prometheus \\u003e= v2.27.0. \\n Cannot be set at the same time as `sigv4`, `authorization`, `basicAuth`, or `azureAd`.\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"proxyUrl\": {\n \"description\": \"Optional ProxyURL.\",\n \"type\": \"string\"\n },\n \"queueConfig\": {\n \"description\": \"QueueConfig allows tuning of the remote write queue parameters.\",\n \"properties\": {\n \"batchSendDeadline\": {\n \"description\": \"BatchSendDeadline is the maximum time a sample will wait in buffer.\",\n \"type\": \"string\"\n },\n \"capacity\": {\n \"description\": \"Capacity is the number of samples to buffer per shard before we start dropping them.\",\n \"type\": \"integer\"\n },\n \"maxBackoff\": {\n \"description\": \"MaxBackoff is the maximum retry delay.\",\n \"type\": \"string\"\n },\n \"maxRetries\": {\n \"description\": \"MaxRetries is the maximum number of times to retry a batch on recoverable errors.\",\n \"type\": \"integer\"\n },\n \"maxSamplesPerSend\": {\n \"description\": \"MaxSamplesPerSend is the maximum number of samples per send.\",\n \"type\": \"integer\"\n },\n \"maxShards\": {\n \"description\": \"MaxShards is the maximum number of shards, i.e. amount of concurrency.\",\n \"type\": \"integer\"\n },\n \"minBackoff\": {\n \"description\": \"MinBackoff is the initial retry delay. Gets doubled for every retry.\",\n \"type\": \"string\"\n },\n \"minShards\": {\n \"description\": \"MinShards is the minimum number of shards, i.e. amount of concurrency.\",\n \"type\": \"integer\"\n },\n \"retryOnRateLimit\": {\n \"description\": \"Retry upon receiving a 429 status code from the remote-write storage. This is experimental feature and might change in the future.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"remoteTimeout\": {\n \"description\": \"Timeout for requests to the remote write endpoint.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"sendExemplars\": {\n \"description\": \"Enables sending of exemplars over remote write. Note that exemplar-storage itself must be enabled using the `spec.enableFeature` option for exemplars to be scraped in the first place. \\n It requires Prometheus \\u003e= v2.27.0.\",\n \"type\": \"boolean\"\n },\n \"sendNativeHistograms\": {\n \"description\": \"Enables sending of native histograms, also known as sparse histograms over remote write. \\n It requires Prometheus \\u003e= v2.40.0.\",\n \"type\": \"boolean\"\n },\n \"sigv4\": {\n \"description\": \"Sigv4 allows to configures AWS's Signature Verification 4 for the URL. \\n It requires Prometheus \\u003e= v2.26.0. \\n Cannot be set at the same time as `authorization`, `basicAuth`, `oauth2`, or `azureAd`.\",\n \"properties\": {\n \"accessKey\": {\n \"description\": \"AccessKey is the AWS API key. If not specified, the environment variable `AWS_ACCESS_KEY_ID` is used.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"profile\": {\n \"description\": \"Profile is the named AWS profile used to authenticate.\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"Region is the AWS region. If blank, the region from the default credentials chain used.\",\n \"type\": \"string\"\n },\n \"roleArn\": {\n \"description\": \"RoleArn is the named AWS profile used to authenticate.\",\n \"type\": \"string\"\n },\n \"secretKey\": {\n \"description\": \"SecretKey is the AWS API secret. If not specified, the environment variable `AWS_SECRET_ACCESS_KEY` is used.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS Config to use for the URL.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the Prometheus container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"url\": {\n \"description\": \"The URL of the endpoint to send samples to.\",\n \"type\": \"string\"\n },\n \"writeRelabelConfigs\": {\n \"description\": \"The list of remote write relabel configurations.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\",\n \"properties\": {\n \"action\": {\n \"default\": \"replace\",\n \"description\": \"Action to perform based on the regex matching. \\n `Uppercase` and `Lowercase` actions require Prometheus \\u003e= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus \\u003e= v2.41.0. \\n Default: \\\"Replace\\\"\",\n \"enum\": [\n \"replace\",\n \"Replace\",\n \"keep\",\n \"Keep\",\n \"drop\",\n \"Drop\",\n \"hashmod\",\n \"HashMod\",\n \"labelmap\",\n \"LabelMap\",\n \"labeldrop\",\n \"LabelDrop\",\n \"labelkeep\",\n \"LabelKeep\",\n \"lowercase\",\n \"Lowercase\",\n \"uppercase\",\n \"Uppercase\",\n \"keepequal\",\n \"KeepEqual\",\n \"dropequal\",\n \"DropEqual\"\n ],\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values. \\n Only applicable when the action is `HashMod`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched.\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a Replace action is performed if the regular expression matches. \\n Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator is the string between concatenated SourceLabels.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.\",\n \"items\": {\n \"description\": \"LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\",\n \"pattern\": \"^[a-zA-Z_][a-zA-Z0-9_]*$\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting string is written in a replacement. \\n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \\n Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"replicaExternalLabelName\": {\n \"description\": \"Name of Prometheus external label used to denote the replica name. The external label will _not_ be added when the field is set to the empty string (`\\\"\\\"`). \\n Default: \\\"prometheus_replica\\\"\",\n \"type\": \"string\"\n },\n \"replicas\": {\n \"description\": \"Number of replicas of each shard to deploy for a Prometheus deployment. `spec.replicas` multiplied by `spec.shards` is the total number of Pods created. \\n Default: 1\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"resources\": {\n \"description\": \"Defines the resources requests and limits of the 'prometheus' container.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"retention\": {\n \"description\": \"How long to retain the Prometheus data. \\n Default: \\\"24h\\\" if `spec.retention` and `spec.retentionSize` are empty.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"retentionSize\": {\n \"description\": \"Maximum number of bytes used by the Prometheus data.\",\n \"pattern\": \"(^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$\",\n \"type\": \"string\"\n },\n \"routePrefix\": {\n \"description\": \"The route prefix Prometheus registers HTTP handlers for. \\n This is useful when using `spec.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`.\",\n \"type\": \"string\"\n },\n \"ruleNamespaceSelector\": {\n \"description\": \"Namespaces to match for PrometheusRule discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"ruleSelector\": {\n \"description\": \"PrometheusRule objects to be selected for rule evaluation. An empty label selector matches all objects. A null label selector matches no objects.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"rules\": {\n \"description\": \"Defines the configuration of the Prometheus rules' engine.\",\n \"properties\": {\n \"alert\": {\n \"description\": \"Defines the parameters of the Prometheus rules' engine. \\n Any update to these parameters trigger a restart of the pods.\",\n \"properties\": {\n \"forGracePeriod\": {\n \"description\": \"Minimum duration between alert and restored 'for' state. \\n This is maintained only for alerts with a configured 'for' time greater than the grace period.\",\n \"type\": \"string\"\n },\n \"forOutageTolerance\": {\n \"description\": \"Max time to tolerate prometheus outage for restoring 'for' state of alert.\",\n \"type\": \"string\"\n },\n \"resendDelay\": {\n \"description\": \"Minimum amount of time to wait before resending an alert to Alertmanager.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"sampleLimit\": {\n \"description\": \"SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. Only valid in Prometheus versions 2.45.0 and newer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"scrapeConfigNamespaceSelector\": {\n \"description\": \"Namespaces to match for ScrapeConfig discovery. An empty label selector matches all namespaces. A null label selector matches the current current namespace only.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"scrapeConfigSelector\": {\n \"description\": \"*Experimental* ScrapeConfigs to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration's Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the `prometheus.yaml.gz` key. This behavior is *deprecated* and will be removed in the next major version of the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs` instead.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"scrapeInterval\": {\n \"default\": \"30s\",\n \"description\": \"Interval between consecutive scrapes. \\n Default: \\\"30s\\\"\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"scrapeTimeout\": {\n \"description\": \"Number of seconds to wait until a scrape request times out.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"secrets\": {\n \"description\": \"Secrets is a list of Secrets in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. Each Secret is added to the StatefulSet definition as a volume named `secret-\\u003csecret-name\\u003e`. The Secrets are mounted into /etc/prometheus/secrets/\\u003csecret-name\\u003e in the 'prometheus' container.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings. This defaults to the default PodSecurityContext.\",\n \"properties\": {\n \"fsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"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.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"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.\",\n \"properties\": {\n \"localhostProfile\": {\n \"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 be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"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.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"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.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. 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.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run the Prometheus Pods.\",\n \"type\": \"string\"\n },\n \"serviceMonitorNamespaceSelector\": {\n \"description\": \"Namespaces to match for ServicedMonitors discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceMonitorSelector\": {\n \"description\": \"ServiceMonitors to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration's Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the `prometheus.yaml.gz` key. This behavior is *deprecated* and will be removed in the next major version of the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs` instead.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sha\": {\n \"description\": \"*Deprecated: use 'spec.image' instead. The image's digest can be specified as part of the image name.*\",\n \"type\": \"string\"\n },\n \"shards\": {\n \"description\": \"EXPERIMENTAL: Number of shards to distribute targets onto. `spec.replicas` multiplied by `spec.shards` is the total number of Pods created. \\n Note that scaling down shards will not reshard data onto remaining instances, it must be manually moved. Increasing shards will not reshard data either but it will continue to be available from the same instances. To query globally, use Thanos sidecar and Thanos querier or remote write data to a central location. \\n Sharding is performed on the content of the `__address__` target meta-label for PodMonitors and ServiceMonitors and `__param_target__` for Probes. \\n Default: 1\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"storage\": {\n \"description\": \"Storage defines the storage used by Prometheus.\",\n \"properties\": {\n \"disableMountSubPath\": {\n \"description\": \"*Deprecated: subPath usage will be removed in a future release.*\",\n \"type\": \"boolean\"\n },\n \"emptyDir\": {\n \"description\": \"EmptyDirVolumeSource to be used by the StatefulSet. If specified, it takes precedence over `ephemeral` and `volumeClaimTemplate`. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir\",\n \"properties\": {\n \"medium\": {\n \"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\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"EphemeralVolumeSource to be used by the StatefulSet. This is a beta field in k8s 1.21 and GA in 1.15. 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\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where `\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"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.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"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.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"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. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any 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, when namespace isn't specified in dataSourceRef, 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. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three 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. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"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\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"Defines the PVC spec to be used by the Prometheus StatefulSets. The easiest way to use a volume that cannot be automatically provisioned is to use a label selector alongside manually created PersistentVolumes.\",\n \"properties\": {\n \"apiVersion\": {\n \"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\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"EmbeddedMetadata contains metadata relevant to an EmbeddedResource.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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\",\n \"type\": \"object\"\n },\n \"name\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"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. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any 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, when namespace isn't specified in dataSourceRef, 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. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three 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. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"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\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"status\": {\n \"description\": \"*Deprecated: this field is never set.*\",\n \"properties\": {\n \"accessModes\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allocatedResourceStatuses\": {\n \"additionalProperties\": {\n \"description\": \"When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource that it does not recognizes, then it should ignore that update and let other controllers handle it.\",\n \"type\": \"string\"\n },\n \"description\": \"allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \\n ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeInProgress\\\" - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeFailed\\\" - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizePending\\\" - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeInProgress\\\" - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeFailed\\\" When this field is not set, it means that no resize operation is in progress for the given PVC. \\n A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \\n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"granular\"\n },\n \"allocatedResources\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \\n Capacity reported here 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. \\n A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \\n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\"\n },\n \"capacity\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"capacity represents the actual resources of the underlying volume.\",\n \"type\": \"object\"\n },\n \"conditions\": {\n \"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'.\",\n \"items\": {\n \"description\": \"PersistentVolumeClaimCondition contains details about state of pvc\",\n \"properties\": {\n \"lastProbeTime\": {\n \"description\": \"lastProbeTime is the time we probed the condition.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"lastTransitionTime\": {\n \"description\": \"lastTransitionTime is the time the condition transitioned from one status to another.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"message is the human-readable message indicating details about last transition.\",\n \"type\": \"string\"\n },\n \"reason\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"phase\": {\n \"description\": \"phase represents the current phase of PersistentVolumeClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tag\": {\n \"description\": \"*Deprecated: use 'spec.image' instead. The image's tag can be specified as part of the image name.*\",\n \"type\": \"string\"\n },\n \"targetLimit\": {\n \"description\": \"TargetLimit defines a limit on the number of scraped targets that will be accepted. Only valid in Prometheus versions 2.45.0 and newer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"thanos\": {\n \"description\": \"Defines the configuration of the optional Thanos sidecar. \\n This section is experimental, it may change significantly without deprecation notice in any release.\",\n \"properties\": {\n \"additionalArgs\": {\n \"description\": \"AdditionalArgs allows setting additional arguments for the Thanos container. The arguments are passed as-is to the Thanos container which may cause issues if they are invalid or not supported the given Thanos 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.\",\n \"items\": {\n \"description\": \"Argument as part of the AdditionalArgs list.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the argument, e.g. \\\"scrape.discovery-reload-interval\\\".\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Argument value, e.g. 30s. Can be empty for name-only arguments (e.g. --storage.tsdb.no-lockfile)\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"baseImage\": {\n \"description\": \"*Deprecated: use 'image' instead.*\",\n \"type\": \"string\"\n },\n \"blockSize\": {\n \"default\": \"2h\",\n \"description\": \"BlockDuration controls the size of TSDB blocks produced by Prometheus. The default value is 2h to match the upstream Prometheus defaults. \\n WARNING: Changing the block duration can impact the performance and efficiency of the entire Prometheus/Thanos stack due to how it interacts with memory and Thanos compactors. It is recommended to keep this value set to a multiple of 120 times your longest scrape or rule interval. For example, 30s * 120 = 1h.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"getConfigInterval\": {\n \"description\": \"How often to retrieve the Prometheus configuration.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"getConfigTimeout\": {\n \"description\": \"Maximum time to wait when retrieving the Prometheus configuration.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"grpcListenLocal\": {\n \"description\": \"When true, the Thanos sidecar listens on the loopback interface instead of the Pod IP's address for the gRPC endpoints. \\n It has no effect if `listenLocal` is true.\",\n \"type\": \"boolean\"\n },\n \"grpcServerTlsConfig\": {\n \"description\": \"Configures the TLS parameters for the gRPC server providing the StoreAPI. \\n Note: Currently only the `caFile`, `certFile`, and `keyFile` fields are supported.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the Prometheus container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"httpListenLocal\": {\n \"description\": \"When true, the Thanos sidecar listens on the loopback interface instead of the Pod IP's address for the HTTP endpoints. \\n It has no effect if `listenLocal` is true.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Container image name for Thanos. If specified, it takes precedence over the `spec.thanos.baseImage`, `spec.thanos.tag` and `spec.thanos.sha` fields. \\n Specifying `spec.thanos.version` is still necessary to ensure the Prometheus Operator knows which version of Thanos is being configured. \\n If neither `spec.thanos.image` nor `spec.thanos.baseImage` are defined, the operator will use the latest upstream version of Thanos available at the time when the operator was released.\",\n \"type\": \"string\"\n },\n \"listenLocal\": {\n \"description\": \"*Deprecated: use `grpcListenLocal` and `httpListenLocal` instead.*\",\n \"type\": \"boolean\"\n },\n \"logFormat\": {\n \"description\": \"Log format for the Thanos sidecar.\",\n \"enum\": [\n \"\",\n \"logfmt\",\n \"json\"\n ],\n \"type\": \"string\"\n },\n \"logLevel\": {\n \"description\": \"Log level for the Thanos sidecar.\",\n \"enum\": [\n \"\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ],\n \"type\": \"string\"\n },\n \"minTime\": {\n \"description\": \"Defines the start of time range limit served by the Thanos sidecar's StoreAPI. The field's value should be a constant time in RFC3339 format or a time duration relative to current time, such as -1d or 2h45m. Valid duration units are ms, s, m, h, d, w, y.\",\n \"type\": \"string\"\n },\n \"objectStorageConfig\": {\n \"description\": \"Defines the Thanos sidecar's configuration to upload TSDB blocks to object storage. \\n More info: https://thanos.io/tip/thanos/storage.md/ \\n objectStorageConfigFile takes precedence over this field.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"objectStorageConfigFile\": {\n \"description\": \"Defines the Thanos sidecar's configuration file to upload TSDB blocks to object storage. \\n More info: https://thanos.io/tip/thanos/storage.md/ \\n This field takes precedence over objectStorageConfig.\",\n \"type\": \"string\"\n },\n \"readyTimeout\": {\n \"description\": \"ReadyTimeout is the maximum time that the Thanos sidecar will wait for Prometheus to start.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Defines the resources requests and limits of the Thanos sidecar.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"sha\": {\n \"description\": \"*Deprecated: use 'image' instead. The image digest can be specified as part of the image name.*\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"description\": \"*Deprecated: use 'image' instead. The image's tag can be specified as part of the image name.*\",\n \"type\": \"string\"\n },\n \"tracingConfig\": {\n \"description\": \"Defines the tracing configuration for the Thanos sidecar. \\n More info: https://thanos.io/tip/thanos/tracing.md/ \\n This is an experimental feature, it may change in any upcoming release in a breaking way. \\n tracingConfigFile takes precedence over this field.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"tracingConfigFile\": {\n \"description\": \"Defines the tracing configuration file for the Thanos sidecar. \\n More info: https://thanos.io/tip/thanos/tracing.md/ \\n This is an experimental feature, it may change in any upcoming release in a breaking way. \\n This field takes precedence over tracingConfig.\",\n \"type\": \"string\"\n },\n \"version\": {\n \"description\": \"Version of Thanos being deployed. The operator uses this information to generate the Prometheus StatefulSet + configuration files. \\n If not specified, the operator assumes the latest upstream release of Thanos available at the time when the version of the operator was released.\",\n \"type\": \"string\"\n },\n \"volumeMounts\": {\n \"description\": \"VolumeMounts allows configuration of additional VolumeMounts for Thanos. VolumeMounts specified will be appended to other VolumeMounts in the 'thanos-sidecar' container.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Defines the Pods' tolerations if specified.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches the triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"Defines the pod's topology spread constraints if specified.\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"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. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector. \\n This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"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).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"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 beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"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 beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"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 \\u003ckey, value\\u003e 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.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tracingConfig\": {\n \"description\": \"EXPERIMENTAL: TracingConfig configures tracing in Prometheus. This is an experimental feature, it may change in any upcoming release in a breaking way.\",\n \"properties\": {\n \"clientType\": {\n \"description\": \"Client used to export the traces. Supported values are `http` or `grpc`.\",\n \"enum\": [\n \"http\",\n \"grpc\"\n ],\n \"type\": \"string\"\n },\n \"compression\": {\n \"description\": \"Compression key for supported compression types. The only supported value is `gzip`.\",\n \"enum\": [\n \"gzip\"\n ],\n \"type\": \"string\"\n },\n \"endpoint\": {\n \"description\": \"Endpoint to send the traces to. Should be provided in format \\u003chost\\u003e:\\u003cport\\u003e.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Key-value pairs to be used as headers associated with gRPC or HTTP requests.\",\n \"type\": \"object\"\n },\n \"insecure\": {\n \"description\": \"If disabled, the client will use a secure connection.\",\n \"type\": \"boolean\"\n },\n \"samplingFraction\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Sets the probability a given trace will be sampled. Must be a float from 0 through 1.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"timeout\": {\n \"description\": \"Maximum time the exporter will wait for each batch export.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS Config to use when sending traces.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the Prometheus container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"endpoint\"\n ],\n \"type\": \"object\"\n },\n \"tsdb\": {\n \"description\": \"Defines the runtime reloadable configuration of the timeseries database (TSDB).\",\n \"properties\": {\n \"outOfOrderTimeWindow\": {\n \"description\": \"Configures how old an out-of-order/out-of-bounds sample can be with respect to the TSDB max time. \\n An out-of-order/out-of-bounds sample is ingested into the TSDB as long as the timestamp of the sample is \\u003e= (TSDB.MaxTime - outOfOrderTimeWindow). \\n Out of order ingestion is an experimental feature. \\n It requires Prometheus \\u003e= v2.39.0.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"version\": {\n \"description\": \"Version of Prometheus being deployed. The operator uses this information to generate the Prometheus StatefulSet + configuration files. \\n If not specified, the operator assumes the latest upstream version of Prometheus available at the time when the version of the operator was released.\",\n \"type\": \"string\"\n },\n \"volumeMounts\": {\n \"description\": \"VolumeMounts allows the configuration of additional VolumeMounts. \\n VolumeMounts will be appended to other VolumeMounts in the 'prometheus' container, that are generated as a result of StorageSpec objects.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"description\": \"Volumes allows the 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.\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"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).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"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\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"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\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"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.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"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\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. \\n Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). \\n Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. \\n Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. \\n A pod can use both types of ephemeral volumes and persistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where `\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"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.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"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.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"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. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any 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, when namespace isn't specified in dataSourceRef, 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. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three 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. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"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\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"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.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker should be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"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.\",\n \"properties\": {\n \"directory\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"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\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"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.\",\n \"properties\": {\n \"path\": {\n \"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\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume Defaults to \\\"\\\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"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\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"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).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"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).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"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\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"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\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts. Default false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the token into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to Default is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"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\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to Defaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"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\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"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\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"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\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"walCompression\": {\n \"description\": \"Configures compression of the write-ahead log (WAL) using Snappy. \\n WAL compression is enabled by default for Prometheus \\u003e= 2.20.0 \\n Requires Prometheus v2.11.0 and above.\",\n \"type\": \"boolean\"\n },\n \"web\": {\n \"description\": \"Defines the configuration of the Prometheus web server.\",\n \"properties\": {\n \"httpConfig\": {\n \"description\": \"Defines HTTP parameters for web server.\",\n \"properties\": {\n \"headers\": {\n \"description\": \"List of headers that can be added to HTTP responses.\",\n \"properties\": {\n \"contentSecurityPolicy\": {\n \"description\": \"Set the Content-Security-Policy header to HTTP responses. Unset if blank.\",\n \"type\": \"string\"\n },\n \"strictTransportSecurity\": {\n \"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\",\n \"type\": \"string\"\n },\n \"xContentTypeOptions\": {\n \"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\",\n \"enum\": [\n \"\",\n \"NoSniff\"\n ],\n \"type\": \"string\"\n },\n \"xFrameOptions\": {\n \"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\",\n \"enum\": [\n \"\",\n \"Deny\",\n \"SameOrigin\"\n ],\n \"type\": \"string\"\n },\n \"xXSSProtection\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"http2\": {\n \"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.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"maxConnections\": {\n \"description\": \"Defines the maximum number of simultaneous connections A zero value means that Prometheus doesn't accept any incoming connection.\",\n \"format\": \"int32\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"pageTitle\": {\n \"description\": \"The prometheus web page title.\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"Defines the TLS parameters for HTTPS.\",\n \"properties\": {\n \"cert\": {\n \"description\": \"Contains the TLS certificate for the server.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"cipherSuites\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"clientAuthType\": {\n \"description\": \"Server policy for client authentication. Maps to ClientAuth Policies. For more detail on clientAuth options: https://golang.org/pkg/crypto/tls/#ClientAuthType\",\n \"type\": \"string\"\n },\n \"client_ca\": {\n \"description\": \"Contains the CA certificate for client certificate authentication to the server.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"curvePreferences\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the TLS key for the server.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"maxVersion\": {\n \"description\": \"Maximum TLS version that is acceptable. Defaults to TLS13.\",\n \"type\": \"string\"\n },\n \"minVersion\": {\n \"description\": \"Minimum TLS version that is acceptable. Defaults to TLS12.\",\n \"type\": \"string\"\n },\n \"preferServerCipherSuites\": {\n \"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.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"cert\",\n \"keySecret\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"title\": \"Prometheus\",\n \"type\": \"object\"\n}", + "version": "monitoring.coreos.com/v1" + }, + "configuration": null, + "description": "", + "displayName": "Prometheus", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz" + }, + "model": { + "category": { + "name": "Uncategorized" + }, + "displayName": "Dnation Kubernetes Monitoring Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n" + }, + "model": { + "version": "3.6.2" + }, + "name": "dnation-kubernetes-monitoring-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Uncategorized", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#F15B2A", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 103.7 112.7\" style=\"enable-background:new 0 0 103.7 112.7;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n .st0{fill:url(#SVGID_1_);}\n\u003c/style\u003e\n\u003clinearGradient id=\"SVGID_1_\" gradientUnits=\"userSpaceOnUse\" x1=\"51.85\" y1=\"1069.5107\" x2=\"51.85\" y2=\"966.6585\" gradientTransform=\"matrix(1 0 0 1 0 -931.4)\"\u003e\n \u003cstop offset=\"0\" style=\"stop-color:#FCEE1F\"/\u003e\n \u003cstop offset=\"1\" style=\"stop-color:#F15B2A\"/\u003e\n\u003c/linearGradient\u003e\n\u003cpath class=\"st0\" d=\"M103.5,49.9c-0.2-1.9-0.5-4.1-1.1-6.5c-0.6-2.4-1.6-5-2.9-7.8c-1.4-2.7-3.1-5.6-5.4-8.3\n c-0.9-1.1-1.9-2.1-2.9-3.2c1.6-6.3-1.9-11.8-1.9-11.8c-6.1-0.4-9.9,1.9-11.3,2.9c-0.2-0.1-0.5-0.2-0.7-0.3c-1-0.4-2.1-0.8-3.2-1.2\n c-1.1-0.3-2.2-0.7-3.3-0.9c-1.1-0.3-2.3-0.5-3.5-0.7c-0.2,0-0.4-0.1-0.6-0.1C64.1,3.6,56.5,0,56.5,0c-8.7,5.6-10.4,13.1-10.4,13.1\n s0,0.2-0.1,0.4c-0.5,0.1-0.9,0.3-1.4,0.4c-0.6,0.2-1.3,0.4-1.9,0.7c-0.6,0.3-1.3,0.5-1.9,0.8c-1.3,0.6-2.5,1.2-3.8,1.9\n c-1.2,0.7-2.4,1.4-3.5,2.2c-0.2-0.1-0.3-0.2-0.3-0.2c-11.7-4.5-22.1,0.9-22.1,0.9c-0.9,12.5,4.7,20.3,5.8,21.7\n c-0.3,0.8-0.5,1.5-0.8,2.3c-0.9,2.8-1.5,5.7-1.9,8.7c-0.1,0.4-0.1,0.9-0.2,1.3C3.2,59.5,0,70.5,0,70.5c9,10.4,19.6,11,19.6,11l0,0\n c1.3,2.4,2.9,4.7,4.6,6.8c0.7,0.9,1.5,1.7,2.3,2.6c-3.3,9.4,0.5,17.3,0.5,17.3c10.1,0.4,16.7-4.4,18.1-5.5c1,0.3,2,0.6,3,0.9\n c3.1,0.8,6.3,1.3,9.4,1.4c0.8,0,1.6,0,2.4,0h0.4h0.3h0.5h0.5l0,0c4.7,6.8,13.1,7.7,13.1,7.7c5.9-6.3,6.3-12.4,6.3-13.8l0,0\n c0,0,0,0,0-0.1s0-0.2,0-0.2l0,0c0-0.1,0-0.2,0-0.3c1.2-0.9,2.4-1.8,3.6-2.8c2.4-2.1,4.4-4.6,6.2-7.2c0.2-0.2,0.3-0.5,0.5-0.7\n c6.7,0.4,11.4-4.2,11.4-4.2c-1.1-7-5.1-10.4-5.9-11l0,0c0,0,0,0-0.1-0.1l-0.1-0.1l0,0l-0.1-0.1c0-0.4,0.1-0.8,0.1-1.3\n c0.1-0.8,0.1-1.5,0.1-2.3v-0.6v-0.3v-0.1c0-0.2,0-0.1,0-0.2v-0.5v-0.6c0-0.2,0-0.4,0-0.6s0-0.4-0.1-0.6l-0.1-0.6l-0.1-0.6\n c-0.1-0.8-0.3-1.5-0.4-2.3c-0.7-3-1.9-5.9-3.4-8.4c-1.6-2.6-3.5-4.8-5.7-6.8c-2.2-1.9-4.6-3.5-7.2-4.6c-2.6-1.2-5.2-1.9-7.9-2.2\n c-1.3-0.2-2.7-0.2-4-0.2h-0.5h-0.1H67h-0.2h-0.5c-0.2,0-0.4,0-0.5,0c-0.7,0.1-1.4,0.2-2,0.3c-2.7,0.5-5.2,1.5-7.4,2.8\n c-2.2,1.3-4.1,3-5.7,4.9s-2.8,3.9-3.6,6.1c-0.8,2.1-1.3,4.4-1.4,6.5c0,0.5,0,1.1,0,1.6c0,0.1,0,0.3,0,0.4v0.4c0,0.3,0,0.5,0.1,0.8\n c0.1,1.1,0.3,2.1,0.6,3.1c0.6,2,1.5,3.8,2.7,5.4s2.5,2.8,4,3.8s3,1.7,4.6,2.2s3.1,0.7,4.5,0.6c0.2,0,0.4,0,0.5,0s0.2,0,0.3,0\n s0.2,0,0.3,0c0.2,0,0.3,0,0.5,0h0.1H64c0.1,0,0.2,0,0.3,0c0.2,0,0.4-0.1,0.5-0.1c0.2,0,0.3-0.1,0.5-0.1c0.3-0.1,0.7-0.2,1-0.3\n c0.6-0.2,1.2-0.5,1.8-0.7c0.6-0.3,1.1-0.6,1.5-0.9c0.1-0.1,0.3-0.2,0.4-0.3c0.5-0.4,0.6-1.1,0.2-1.6c-0.4-0.4-1-0.5-1.5-0.3\n c-0.1,0.1-0.2,0.1-0.4,0.2c-0.4,0.2-0.9,0.4-1.3,0.5c-0.5,0.1-1,0.3-1.5,0.4c-0.3,0-0.5,0.1-0.8,0.1c-0.1,0-0.3,0-0.4,0\n c-0.1,0-0.3,0-0.4,0s-0.3,0-0.4,0c-0.2,0-0.3,0-0.5,0c0,0-0.1,0,0,0h-0.1h-0.1c-0.1,0-0.1,0-0.2,0s-0.3,0-0.4-0.1\n c-1.1-0.2-2.3-0.5-3.4-1s-2.2-1.2-3.1-2.1c-1-0.9-1.8-1.9-2.5-3.1s-1.1-2.5-1.3-3.8c-0.1-0.7-0.2-1.4-0.1-2.1c0-0.2,0-0.4,0-0.6\n c0,0.1,0,0,0,0v-0.1v-0.1c0-0.1,0-0.2,0-0.3c0-0.4,0.1-0.7,0.2-1.1c0.5-3,2-5.9,4.3-8.1c0.6-0.6,1.2-1.1,1.9-1.5\n c0.7-0.5,1.4-0.9,2.1-1.2s1.5-0.6,2.3-0.8s1.6-0.4,2.4-0.4c0.4,0,0.8-0.1,1.2-0.1c0.1,0,0.2,0,0.3,0h0.3H67c0.1,0,0,0,0,0h0.1h0.3\n c0.9,0.1,1.8,0.2,2.6,0.4c1.7,0.4,3.4,1,5,1.9c3.2,1.8,5.9,4.5,7.5,7.8c0.8,1.6,1.4,3.4,1.7,5.3c0.1,0.5,0.1,0.9,0.2,1.4v0.3V66\n c0,0.1,0,0.2,0,0.3c0,0.1,0,0.2,0,0.3v0.3v0.3c0,0.2,0,0.6,0,0.8c0,0.5-0.1,1-0.1,1.5c-0.1,0.5-0.1,1-0.2,1.5\n c-0.1,0.5-0.2,1-0.3,1.5c-0.2,1-0.6,1.9-0.9,2.9c-0.7,1.9-1.7,3.7-2.9,5.3c-2.4,3.3-5.7,6-9.4,7.7c-1.9,0.8-3.8,1.5-5.8,1.8\n c-1,0.2-2,0.3-3,0.3h-0.2h-0.2h-0.3h-0.5h-0.3c0.1,0,0,0,0,0h-0.1c-0.5,0-1.1,0-1.6-0.1c-2.2-0.2-4.3-0.6-6.4-1.2s-4.1-1.4-6-2.4\n c-3.8-2-7.2-4.9-9.9-8.2c-1.3-1.7-2.5-3.5-3.5-5.4s-1.7-3.9-2.3-5.9s-0.9-4.1-1-6.2v-0.4v-0.1v-0.1v-0.2V60v-0.1v-0.1v-0.2v-0.5V59\n l0,0v-0.2c0-0.3,0-0.5,0-0.8c0-1,0.1-2.1,0.3-3.2c0.1-1.1,0.3-2.1,0.5-3.2c0.2-1.1,0.5-2.1,0.8-3.2c0.6-2.1,1.3-4.1,2.2-6\n c1.8-3.8,4.1-7.2,6.8-9.9c0.7-0.7,1.4-1.3,2.2-1.9c0.3-0.3,1-0.9,1.8-1.4s1.6-1,2.5-1.4c0.4-0.2,0.8-0.4,1.3-0.6\n c0.2-0.1,0.4-0.2,0.7-0.3c0.2-0.1,0.4-0.2,0.7-0.3c0.9-0.4,1.8-0.7,2.7-1c0.2-0.1,0.5-0.1,0.7-0.2s0.5-0.1,0.7-0.2\n c0.5-0.1,0.9-0.2,1.4-0.4c0.2-0.1,0.5-0.1,0.7-0.2c0.2,0,0.5-0.1,0.7-0.1s0.5-0.1,0.7-0.1l0.4-0.1l0.4-0.1c0.2,0,0.5-0.1,0.7-0.1\n c0.3,0,0.5-0.1,0.8-0.1c0.2,0,0.6-0.1,0.8-0.1c0.2,0,0.3,0,0.5-0.1h0.3H61h0.2c0.3,0,0.5,0,0.8-0.1h0.4c0,0,0.1,0,0,0h0.1h0.2\n c0.2,0,0.5,0,0.7,0c0.9,0,1.8,0,2.7,0c1.8,0.1,3.6,0.3,5.3,0.6c3.4,0.6,6.7,1.7,9.6,3.2c2.9,1.4,5.6,3.2,7.8,5.1\n c0.1,0.1,0.3,0.2,0.4,0.4c0.1,0.1,0.3,0.2,0.4,0.4c0.3,0.2,0.5,0.5,0.8,0.7s0.5,0.5,0.8,0.7c0.2,0.3,0.5,0.5,0.7,0.8\n c1,1,1.9,2.1,2.7,3.1c1.6,2.1,2.9,4.2,3.9,6.2c0.1,0.1,0.1,0.2,0.2,0.4c0.1,0.1,0.1,0.2,0.2,0.4c0.1,0.2,0.2,0.5,0.4,0.7\n c0.1,0.2,0.2,0.5,0.3,0.7c0.1,0.2,0.2,0.5,0.3,0.7c0.4,0.9,0.7,1.8,1,2.7c0.5,1.4,0.8,2.6,1.1,3.6c0.1,0.4,0.5,0.7,0.9,0.7\n c0.5,0,0.8-0.4,0.8-0.9C103.6,52.7,103.6,51.4,103.5,49.9z\"/\u003e\n\u003c/svg\u003e\n", + "svgWhite": "\u003csvg width=\"86\" height=\"62\" viewBox=\"0 0 86 62\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003ccircle cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003cpath d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M34 62V34H40V62H34Z\" fill=\"white\"/\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"/\u003e\n\u003c/svg\u003e\r" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/PrometheusAgent.json b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/PrometheusAgent.json new file mode 100644 index 00000000000..d1262ef62ec --- /dev/null +++ b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/PrometheusAgent.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "PrometheusAgent", + "schema": "{\n \"description\": \"PrometheusAgent defines a Prometheus agent deployment.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"Specification of the desired behavior of the Prometheus agent. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\",\n \"properties\": {\n \"additionalArgs\": {\n \"description\": \"AdditionalArgs allows setting additional arguments for the 'prometheus' container. \\n 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 supported by the given Prometheus version. \\n 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.\",\n \"items\": {\n \"description\": \"Argument as part of the AdditionalArgs list.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the argument, e.g. \\\"scrape.discovery-reload-interval\\\".\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Argument value, e.g. 30s. Can be empty for name-only arguments (e.g. --storage.tsdb.no-lockfile)\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"additionalScrapeConfigs\": {\n \"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.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"affinity\": {\n \"description\": \"Defines the Pods' affinity scheduling rules if specified.\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"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).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"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 \\u003ctopologyKey\\u003e matches that of any node on which a pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"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 \\u003ctopologyKey\\u003e matches that of any node on which a pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"apiserverConfig\": {\n \"description\": \"APIServerConfig allows specifying a host and auth methods to access the Kuberntees API server. If null, Prometheus is assumed to run inside of the cluster: it will discover the API servers automatically and use the Pod's CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization section for the API server. \\n Cannot be set at the same time as `basicAuth`, `bearerToken`, or `bearerTokenFile`.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"credentialsFile\": {\n \"description\": \"File to read a secret from, mutually exclusive with `credentials`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth configuration for the API server. \\n Cannot be set at the same time as `authorization`, `bearerToken`, or `bearerTokenFile`.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerToken\": {\n \"description\": \"*Warning: this field shouldn't be used because the token value appears in clear-text. Prefer using `authorization`.* \\n *Deprecated: this will be removed in a future release.*\",\n \"type\": \"string\"\n },\n \"bearerTokenFile\": {\n \"description\": \"File to read bearer token for accessing apiserver. \\n Cannot be set at the same time as `basicAuth`, `authorization`, or `bearerToken`. \\n *Deprecated: this will be removed in a future release. Prefer using `authorization`.*\",\n \"type\": \"string\"\n },\n \"host\": {\n \"description\": \"Kubernetes API address consisting of a hostname or IP address followed by an optional port number.\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS Config to use for the API server.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the Prometheus container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"host\"\n ],\n \"type\": \"object\"\n },\n \"arbitraryFSAccessThroughSMs\": {\n \"description\": \"When true, ServiceMonitor, PodMonitor and Probe object are forbidden to reference arbitrary files on the file system of the 'prometheus' container. When a ServiceMonitor's endpoint specifies a `bearerTokenFile` value (e.g. '/var/run/secrets/kubernetes.io/serviceaccount/token'), a malicious target can get access to the Prometheus service account's token in the Prometheus' scrape request. Setting `spec.arbitraryFSAccessThroughSM` to 'true' would prevent the attack. Users should instead provide the credentials using the `spec.bearerTokenSecret` field.\",\n \"properties\": {\n \"deny\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"bodySizeLimit\": {\n \"description\": \"BodySizeLimit defines per-scrape on response body size. Only valid in Prometheus versions 2.45.0 and newer.\",\n \"pattern\": \"(^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$\",\n \"type\": \"string\"\n },\n \"configMaps\": {\n \"description\": \"ConfigMaps is a list of ConfigMaps in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. Each ConfigMap is added to the StatefulSet definition as a volume named `configmap-\\u003cconfigmap-name\\u003e`. The ConfigMaps are mounted into /etc/prometheus/configmaps/\\u003cconfigmap-name\\u003e in the 'prometheus' container.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"containers\": {\n \"description\": \"Containers allows injecting additional containers or modifying operator generated containers. This can be used to allow adding an authentication proxy to the Pods 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. \\n The names of containers managed by the operator are: * `prometheus` * `config-reloader` * `thanos-sidecar` \\n 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.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container. Cannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"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 \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"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.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"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.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"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\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events. Cannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"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.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"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.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"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.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host. If specified, this must be a valid port number, 0 \\u003c x \\u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod. This field may only be set for init containers, and the only allowed value is \\\"Always\\\". For non-init containers or when this field is not specified, the restart behavior is defined by the Pod's restart policy and the container type. Setting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect: this init container will be continually restarted on exit until all regular containers have terminated. Once all regular containers have completed, all init containers with restartPolicy \\\"Always\\\" will be shut down. This lifecycle differs from normal init containers and is often referred to as a \\\"sidecar\\\" container. Although this init container still starts in the init container sequence, it does not wait for the container to complete before proceeding to the next init container. Instead, the next init container starts immediately after this init container is started, or after any startupProbe has successfully completed.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"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/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"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.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"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.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are provided at both the pod \\u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"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 be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"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.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. 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.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Cannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enableFeatures\": {\n \"description\": \"Enable access to Prometheus feature flags. By default, no features are enabled. \\n Enabling features which are disabled by default 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. \\n For more information see https://prometheus.io/docs/prometheus/latest/feature_flags/\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"enableRemoteWriteReceiver\": {\n \"description\": \"Enable Prometheus to be used as a receiver for the Prometheus remote write protocol. \\n 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 \\n It requires Prometheus \\u003e= v2.33.0.\",\n \"type\": \"boolean\"\n },\n \"enforcedBodySizeLimit\": {\n \"description\": \"When defined, enforcedBodySizeLimit specifies a global limit on the 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. \\n It requires Prometheus \\u003e= v2.28.0.\",\n \"pattern\": \"(^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$\",\n \"type\": \"string\"\n },\n \"enforcedKeepDroppedTargets\": {\n \"description\": \"When defined, enforcedKeepDroppedTargets specifies a global limit on the number of targets dropped by relabeling that will be kept in memory. The value overrides any `spec.keepDroppedTargets` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.keepDroppedTargets` is greater than zero and less than `spec.enforcedKeepDroppedTargets`. \\n It requires Prometheus \\u003e= v2.47.0.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"enforcedLabelLimit\": {\n \"description\": \"When defined, enforcedLabelLimit specifies a global limit on the number of labels per sample. The value overrides any `spec.labelLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.labelLimit` is greater than zero and less than `spec.enforcedLabelLimit`. \\n It requires Prometheus \\u003e= v2.27.0.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"enforcedLabelNameLengthLimit\": {\n \"description\": \"When defined, enforcedLabelNameLengthLimit specifies a global limit on the length of labels name per sample. The value overrides any `spec.labelNameLengthLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.labelNameLengthLimit` is greater than zero and less than `spec.enforcedLabelNameLengthLimit`. \\n It requires Prometheus \\u003e= v2.27.0.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"enforcedLabelValueLengthLimit\": {\n \"description\": \"When not null, enforcedLabelValueLengthLimit defines a global limit on the length of labels value per sample. The value overrides any `spec.labelValueLengthLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.labelValueLengthLimit` is greater than zero and less than `spec.enforcedLabelValueLengthLimit`. \\n It requires Prometheus \\u003e= v2.27.0.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"enforcedNamespaceLabel\": {\n \"description\": \"When not empty, a label will be added to \\n 1. All metrics scraped from `ServiceMonitor`, `PodMonitor`, `Probe` and `ScrapeConfig` objects. 2. All metrics generated from recording rules defined in `PrometheusRule` objects. 3. All alerts generated from alerting rules defined in `PrometheusRule` objects. 4. All vector selectors of PromQL expressions defined in `PrometheusRule` objects. \\n The label will not added for objects referenced in `spec.excludedFromEnforcement`. \\n The label's name is this field's value. The label's value is the namespace of the `ServiceMonitor`, `PodMonitor`, `Probe` or `PrometheusRule` object.\",\n \"type\": \"string\"\n },\n \"enforcedSampleLimit\": {\n \"description\": \"When defined, enforcedSampleLimit specifies a global limit on the number of scraped samples that will be accepted. This overrides any `spec.sampleLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.sampleLimit` is greater than zero and less than than `spec.enforcedSampleLimit`. \\n It is meant to be used by admins to keep the overall number of samples/series under a desired limit.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"enforcedTargetLimit\": {\n \"description\": \"When defined, enforcedTargetLimit specifies a global limit on the number of scraped targets. The value overrides any `spec.targetLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.targetLimit` is greater than zero and less than `spec.enforcedTargetLimit`. \\n It is meant to be used by admins to to keep the overall number of targets under a desired limit.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"excludedFromEnforcement\": {\n \"description\": \"List of references to PodMonitor, ServiceMonitor, Probe and PrometheusRule objects to be excluded from enforcing a namespace label of origin. \\n It is only applicable if `spec.enforcedNamespaceLabel` set to true.\",\n \"items\": {\n \"description\": \"ObjectReference references a PodMonitor, ServiceMonitor, Probe or PrometheusRule object.\",\n \"properties\": {\n \"group\": {\n \"default\": \"monitoring.coreos.com\",\n \"description\": \"Group of the referent. When not specified, it defaults to `monitoring.coreos.com`\",\n \"enum\": [\n \"monitoring.coreos.com\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. When not set, all resources in the namespace are matched.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"resource\": {\n \"description\": \"Resource of the referent.\",\n \"enum\": [\n \"prometheusrules\",\n \"servicemonitors\",\n \"podmonitors\",\n \"probes\",\n \"scrapeconfigs\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"namespace\",\n \"resource\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"externalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The labels to add to any time series or alerts when communicating with external systems (federation, remote storage, Alertmanager). Labels defined by `spec.replicaExternalLabelName` and `spec.prometheusExternalLabelName` take precedence over this list.\",\n \"type\": \"object\"\n },\n \"externalUrl\": {\n \"description\": \"The external URL under which the Prometheus service is externally available. This is necessary to generate correct URLs (for instance if Prometheus is accessible behind an Ingress resource).\",\n \"type\": \"string\"\n },\n \"hostAliases\": {\n \"description\": \"Optional list of hosts and IPs that will be injected into the Pod's hosts file if specified.\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"hostnames\",\n \"ip\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"ip\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostNetwork\": {\n \"description\": \"Use the host's network namespace if true. \\n Make sure to understand the security implications if you want to enable it (https://kubernetes.io/docs/concepts/configuration/overview/). \\n When hostNetwork is enabled, this will set the DNS policy to `ClusterFirstWithHostNet` automatically.\",\n \"type\": \"boolean\"\n },\n \"ignoreNamespaceSelectors\": {\n \"description\": \"When true, `spec.namespaceSelector` from all PodMonitor, ServiceMonitor and Probe objects will be ignored. They will only discover targets within the namespace of the PodMonitor, ServiceMonitor and Probe object.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Container image name for Prometheus. If specified, it takes precedence over the `spec.baseImage`, `spec.tag` and `spec.sha` fields. \\n Specifying `spec.version` is still necessary to ensure the Prometheus Operator knows which version of Prometheus is being configured. \\n If neither `spec.image` nor `spec.baseImage` are defined, the operator will use the latest upstream version of Prometheus available at the time when the operator was released.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy for the 'prometheus', 'init-config-reloader' and 'config-reloader' containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details.\",\n \"enum\": [\n \"\",\n \"Always\",\n \"Never\",\n \"IfNotPresent\"\n ],\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"An optional list of references to Secrets in the same namespace to use for pulling images from registries. See http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"initContainers\": {\n \"description\": \"InitContainers allows injecting 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. \\n The names of init container name managed by the operator are: * `init-config-reloader`. \\n 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.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container. Cannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"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 \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"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.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"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.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"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\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events. Cannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"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.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"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.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"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.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host. If specified, this must be a valid port number, 0 \\u003c x \\u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod. This field may only be set for init containers, and the only allowed value is \\\"Always\\\". For non-init containers or when this field is not specified, the restart behavior is defined by the Pod's restart policy and the container type. Setting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect: this init container will be continually restarted on exit until all regular containers have terminated. Once all regular containers have completed, all init containers with restartPolicy \\\"Always\\\" will be shut down. This lifecycle differs from normal init containers and is often referred to as a \\\"sidecar\\\" container. Although this init container still starts in the init container sequence, it does not wait for the container to complete before proceeding to the next init container. Instead, the next init container starts immediately after this init container is started, or after any startupProbe has successfully completed.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"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/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"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.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"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.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are provided at both the pod \\u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"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 be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"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.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. 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.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Cannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"keepDroppedTargets\": {\n \"description\": \"Per-scrape limit on the number of targets dropped by relabeling that will be kept in memory. 0 means no limit. \\n It requires Prometheus \\u003e= v2.47.0.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"labelLimit\": {\n \"description\": \"Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.45.0 and newer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"labelNameLengthLimit\": {\n \"description\": \"Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.45.0 and newer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"labelValueLengthLimit\": {\n \"description\": \"Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.45.0 and newer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"listenLocal\": {\n \"description\": \"When true, the Prometheus server listens on the loopback address instead of the Pod IP's address.\",\n \"type\": \"boolean\"\n },\n \"logFormat\": {\n \"description\": \"Log format for Log level for Prometheus and the config-reloader sidecar.\",\n \"enum\": [\n \"\",\n \"logfmt\",\n \"json\"\n ],\n \"type\": \"string\"\n },\n \"logLevel\": {\n \"description\": \"Log level for Prometheus and the config-reloader sidecar.\",\n \"enum\": [\n \"\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ],\n \"type\": \"string\"\n },\n \"minReadySeconds\": {\n \"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) \\n This is an alpha field from kubernetes 1.22 until 1.24 which requires enabling the StatefulSetMinReadySeconds feature gate.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Defines on which Nodes the Pods are scheduled.\",\n \"type\": \"object\"\n },\n \"overrideHonorLabels\": {\n \"description\": \"When true, Prometheus resolves label conflicts by renaming the labels in the scraped data to \\\"exported_\\u003clabel value\\u003e\\\" for all targets created from service and pod monitors. Otherwise the HonorLabels field of the service or pod monitor applies.\",\n \"type\": \"boolean\"\n },\n \"overrideHonorTimestamps\": {\n \"description\": \"When true, Prometheus ignores the timestamps for all the targets created from service and pod monitors. Otherwise the HonorTimestamps field of the service or pod monitor applies.\",\n \"type\": \"boolean\"\n },\n \"paused\": {\n \"description\": \"When a Prometheus deployment is paused, no actions except for deletion will be performed on the underlying objects.\",\n \"type\": \"boolean\"\n },\n \"podMetadata\": {\n \"description\": \"PodMetadata configures labels and annotations which are propagated to the Prometheus pods. \\n The following items are reserved and cannot be overridden: * \\\"prometheus\\\" label, set to the name of the Prometheus object. * \\\"app.kubernetes.io/instance\\\" label, set to the name of the Prometheus object. * \\\"app.kubernetes.io/managed-by\\\" label, set to \\\"prometheus-operator\\\". * \\\"app.kubernetes.io/name\\\" label, set to \\\"prometheus\\\". * \\\"app.kubernetes.io/version\\\" label, set to the Prometheus version. * \\\"operator.prometheus.io/name\\\" label, set to the name of the Prometheus object. * \\\"operator.prometheus.io/shard\\\" label, set to the shard number of the Prometheus object. * \\\"kubectl.kubernetes.io/default-container\\\" annotation, set to \\\"prometheus\\\".\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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\",\n \"type\": \"object\"\n },\n \"name\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"podMonitorNamespaceSelector\": {\n \"description\": \"Namespaces to match for PodMonitors discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"podMonitorSelector\": {\n \"description\": \"*Experimental* PodMonitors to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration's Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the `prometheus.yaml.gz` key. This behavior is *deprecated* and will be removed in the next major version of the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs` instead.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"podTargetLabels\": {\n \"description\": \"PodTargetLabels are appended to the `spec.podTargetLabels` field of all PodMonitor and ServiceMonitor objects.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"portName\": {\n \"default\": \"web\",\n \"description\": \"Port name used for the pods and governing service. Default: \\\"web\\\"\",\n \"type\": \"string\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class assigned to the Pods.\",\n \"type\": \"string\"\n },\n \"probeNamespaceSelector\": {\n \"description\": \"*Experimental* Namespaces to match for Probe discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"probeSelector\": {\n \"description\": \"*Experimental* Probes to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration's Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the `prometheus.yaml.gz` key. This behavior is *deprecated* and will be removed in the next major version of the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs` instead.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prometheusExternalLabelName\": {\n \"description\": \"Name of Prometheus external label used to denote the Prometheus instance name. The external label will _not_ be added when the field is set to the empty string (`\\\"\\\"`). \\n Default: \\\"prometheus\\\"\",\n \"type\": \"string\"\n },\n \"remoteWrite\": {\n \"description\": \"Defines the list of remote write configurations.\",\n \"items\": {\n \"description\": \"RemoteWriteSpec defines the configuration to write samples from Prometheus to a remote endpoint.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization section for the URL. \\n It requires Prometheus \\u003e= v2.26.0. \\n Cannot be set at the same time as `sigv4`, `basicAuth`, `oauth2`, or `azureAd`.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"credentialsFile\": {\n \"description\": \"File to read a secret from, mutually exclusive with `credentials`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"azureAd\": {\n \"description\": \"AzureAD for the URL. \\n It requires Prometheus \\u003e= v2.45.0. \\n Cannot be set at the same time as `authorization`, `basicAuth`, `oauth2`, or `sigv4`.\",\n \"properties\": {\n \"cloud\": {\n \"description\": \"The Azure Cloud. Options are 'AzurePublic', 'AzureChina', or 'AzureGovernment'.\",\n \"enum\": [\n \"AzureChina\",\n \"AzureGovernment\",\n \"AzurePublic\"\n ],\n \"type\": \"string\"\n },\n \"managedIdentity\": {\n \"description\": \"ManagedIdentity defines the Azure User-assigned Managed identity.\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The client id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"managedIdentity\"\n ],\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth configuration for the URL. \\n Cannot be set at the same time as `sigv4`, `authorization`, `oauth2`, or `azureAd`.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerToken\": {\n \"description\": \"*Warning: this field shouldn't be used because the token value appears in clear-text. Prefer using `authorization`.* \\n *Deprecated: this will be removed in a future release.*\",\n \"type\": \"string\"\n },\n \"bearerTokenFile\": {\n \"description\": \"File from which to read bearer token for the URL. \\n *Deprecated: this will be removed in a future release. Prefer using `authorization`.*\",\n \"type\": \"string\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Custom HTTP headers to be sent along with each remote write request. Be aware that headers that are set by Prometheus itself can't be overwritten. \\n It requires Prometheus \\u003e= v2.25.0.\",\n \"type\": \"object\"\n },\n \"metadataConfig\": {\n \"description\": \"MetadataConfig configures the sending of series metadata to the remote storage.\",\n \"properties\": {\n \"send\": {\n \"description\": \"Defines whether metric metadata is sent to the remote storage or not.\",\n \"type\": \"boolean\"\n },\n \"sendInterval\": {\n \"description\": \"Defines how frequently metric metadata is sent to the remote storage.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The name of the remote write queue, it must be unique if specified. The name is used in metrics and logging in order to differentiate queues. \\n It requires Prometheus \\u003e= v2.15.0.\",\n \"type\": \"string\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 configuration for the URL. \\n It requires Prometheus \\u003e= v2.27.0. \\n Cannot be set at the same time as `sigv4`, `authorization`, `basicAuth`, or `azureAd`.\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"proxyUrl\": {\n \"description\": \"Optional ProxyURL.\",\n \"type\": \"string\"\n },\n \"queueConfig\": {\n \"description\": \"QueueConfig allows tuning of the remote write queue parameters.\",\n \"properties\": {\n \"batchSendDeadline\": {\n \"description\": \"BatchSendDeadline is the maximum time a sample will wait in buffer.\",\n \"type\": \"string\"\n },\n \"capacity\": {\n \"description\": \"Capacity is the number of samples to buffer per shard before we start dropping them.\",\n \"type\": \"integer\"\n },\n \"maxBackoff\": {\n \"description\": \"MaxBackoff is the maximum retry delay.\",\n \"type\": \"string\"\n },\n \"maxRetries\": {\n \"description\": \"MaxRetries is the maximum number of times to retry a batch on recoverable errors.\",\n \"type\": \"integer\"\n },\n \"maxSamplesPerSend\": {\n \"description\": \"MaxSamplesPerSend is the maximum number of samples per send.\",\n \"type\": \"integer\"\n },\n \"maxShards\": {\n \"description\": \"MaxShards is the maximum number of shards, i.e. amount of concurrency.\",\n \"type\": \"integer\"\n },\n \"minBackoff\": {\n \"description\": \"MinBackoff is the initial retry delay. Gets doubled for every retry.\",\n \"type\": \"string\"\n },\n \"minShards\": {\n \"description\": \"MinShards is the minimum number of shards, i.e. amount of concurrency.\",\n \"type\": \"integer\"\n },\n \"retryOnRateLimit\": {\n \"description\": \"Retry upon receiving a 429 status code from the remote-write storage. This is experimental feature and might change in the future.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"remoteTimeout\": {\n \"description\": \"Timeout for requests to the remote write endpoint.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"sendExemplars\": {\n \"description\": \"Enables sending of exemplars over remote write. Note that exemplar-storage itself must be enabled using the `spec.enableFeature` option for exemplars to be scraped in the first place. \\n It requires Prometheus \\u003e= v2.27.0.\",\n \"type\": \"boolean\"\n },\n \"sendNativeHistograms\": {\n \"description\": \"Enables sending of native histograms, also known as sparse histograms over remote write. \\n It requires Prometheus \\u003e= v2.40.0.\",\n \"type\": \"boolean\"\n },\n \"sigv4\": {\n \"description\": \"Sigv4 allows to configures AWS's Signature Verification 4 for the URL. \\n It requires Prometheus \\u003e= v2.26.0. \\n Cannot be set at the same time as `authorization`, `basicAuth`, `oauth2`, or `azureAd`.\",\n \"properties\": {\n \"accessKey\": {\n \"description\": \"AccessKey is the AWS API key. If not specified, the environment variable `AWS_ACCESS_KEY_ID` is used.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"profile\": {\n \"description\": \"Profile is the named AWS profile used to authenticate.\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"Region is the AWS region. If blank, the region from the default credentials chain used.\",\n \"type\": \"string\"\n },\n \"roleArn\": {\n \"description\": \"RoleArn is the named AWS profile used to authenticate.\",\n \"type\": \"string\"\n },\n \"secretKey\": {\n \"description\": \"SecretKey is the AWS API secret. If not specified, the environment variable `AWS_SECRET_ACCESS_KEY` is used.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS Config to use for the URL.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the Prometheus container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"url\": {\n \"description\": \"The URL of the endpoint to send samples to.\",\n \"type\": \"string\"\n },\n \"writeRelabelConfigs\": {\n \"description\": \"The list of remote write relabel configurations.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\",\n \"properties\": {\n \"action\": {\n \"default\": \"replace\",\n \"description\": \"Action to perform based on the regex matching. \\n `Uppercase` and `Lowercase` actions require Prometheus \\u003e= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus \\u003e= v2.41.0. \\n Default: \\\"Replace\\\"\",\n \"enum\": [\n \"replace\",\n \"Replace\",\n \"keep\",\n \"Keep\",\n \"drop\",\n \"Drop\",\n \"hashmod\",\n \"HashMod\",\n \"labelmap\",\n \"LabelMap\",\n \"labeldrop\",\n \"LabelDrop\",\n \"labelkeep\",\n \"LabelKeep\",\n \"lowercase\",\n \"Lowercase\",\n \"uppercase\",\n \"Uppercase\",\n \"keepequal\",\n \"KeepEqual\",\n \"dropequal\",\n \"DropEqual\"\n ],\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values. \\n Only applicable when the action is `HashMod`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched.\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a Replace action is performed if the regular expression matches. \\n Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator is the string between concatenated SourceLabels.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.\",\n \"items\": {\n \"description\": \"LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\",\n \"pattern\": \"^[a-zA-Z_][a-zA-Z0-9_]*$\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting string is written in a replacement. \\n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \\n Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"replicaExternalLabelName\": {\n \"description\": \"Name of Prometheus external label used to denote the replica name. The external label will _not_ be added when the field is set to the empty string (`\\\"\\\"`). \\n Default: \\\"prometheus_replica\\\"\",\n \"type\": \"string\"\n },\n \"replicas\": {\n \"description\": \"Number of replicas of each shard to deploy for a Prometheus deployment. `spec.replicas` multiplied by `spec.shards` is the total number of Pods created. \\n Default: 1\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"resources\": {\n \"description\": \"Defines the resources requests and limits of the 'prometheus' container.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"routePrefix\": {\n \"description\": \"The route prefix Prometheus registers HTTP handlers for. \\n This is useful when using `spec.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`.\",\n \"type\": \"string\"\n },\n \"sampleLimit\": {\n \"description\": \"SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. Only valid in Prometheus versions 2.45.0 and newer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"scrapeConfigNamespaceSelector\": {\n \"description\": \"Namespaces to match for ScrapeConfig discovery. An empty label selector matches all namespaces. A null label selector matches the current current namespace only.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"scrapeConfigSelector\": {\n \"description\": \"*Experimental* ScrapeConfigs to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration's Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the `prometheus.yaml.gz` key. This behavior is *deprecated* and will be removed in the next major version of the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs` instead.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"scrapeInterval\": {\n \"default\": \"30s\",\n \"description\": \"Interval between consecutive scrapes. \\n Default: \\\"30s\\\"\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"scrapeTimeout\": {\n \"description\": \"Number of seconds to wait until a scrape request times out.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"secrets\": {\n \"description\": \"Secrets is a list of Secrets in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. Each Secret is added to the StatefulSet definition as a volume named `secret-\\u003csecret-name\\u003e`. The Secrets are mounted into /etc/prometheus/secrets/\\u003csecret-name\\u003e in the 'prometheus' container.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings. This defaults to the default PodSecurityContext.\",\n \"properties\": {\n \"fsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"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.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"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.\",\n \"properties\": {\n \"localhostProfile\": {\n \"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 be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"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.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"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.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. 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.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run the Prometheus Pods.\",\n \"type\": \"string\"\n },\n \"serviceMonitorNamespaceSelector\": {\n \"description\": \"Namespaces to match for ServicedMonitors discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceMonitorSelector\": {\n \"description\": \"ServiceMonitors to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration's Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the `prometheus.yaml.gz` key. This behavior is *deprecated* and will be removed in the next major version of the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs` instead.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"shards\": {\n \"description\": \"EXPERIMENTAL: Number of shards to distribute targets onto. `spec.replicas` multiplied by `spec.shards` is the total number of Pods created. \\n Note that scaling down shards will not reshard data onto remaining instances, it must be manually moved. Increasing shards will not reshard data either but it will continue to be available from the same instances. To query globally, use Thanos sidecar and Thanos querier or remote write data to a central location. \\n Sharding is performed on the content of the `__address__` target meta-label for PodMonitors and ServiceMonitors and `__param_target__` for Probes. \\n Default: 1\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"storage\": {\n \"description\": \"Storage defines the storage used by Prometheus.\",\n \"properties\": {\n \"disableMountSubPath\": {\n \"description\": \"*Deprecated: subPath usage will be removed in a future release.*\",\n \"type\": \"boolean\"\n },\n \"emptyDir\": {\n \"description\": \"EmptyDirVolumeSource to be used by the StatefulSet. If specified, it takes precedence over `ephemeral` and `volumeClaimTemplate`. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir\",\n \"properties\": {\n \"medium\": {\n \"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\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"EphemeralVolumeSource to be used by the StatefulSet. This is a beta field in k8s 1.21 and GA in 1.15. 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\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where `\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"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.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"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.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"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. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any 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, when namespace isn't specified in dataSourceRef, 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. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three 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. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"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\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"Defines the PVC spec to be used by the Prometheus StatefulSets. The easiest way to use a volume that cannot be automatically provisioned is to use a label selector alongside manually created PersistentVolumes.\",\n \"properties\": {\n \"apiVersion\": {\n \"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\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"EmbeddedMetadata contains metadata relevant to an EmbeddedResource.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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\",\n \"type\": \"object\"\n },\n \"name\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"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. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any 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, when namespace isn't specified in dataSourceRef, 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. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three 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. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"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\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"status\": {\n \"description\": \"*Deprecated: this field is never set.*\",\n \"properties\": {\n \"accessModes\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allocatedResourceStatuses\": {\n \"additionalProperties\": {\n \"description\": \"When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource that it does not recognizes, then it should ignore that update and let other controllers handle it.\",\n \"type\": \"string\"\n },\n \"description\": \"allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \\n ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeInProgress\\\" - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeFailed\\\" - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizePending\\\" - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeInProgress\\\" - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeFailed\\\" When this field is not set, it means that no resize operation is in progress for the given PVC. \\n A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \\n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"granular\"\n },\n \"allocatedResources\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \\n Capacity reported here 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. \\n A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \\n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\"\n },\n \"capacity\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"capacity represents the actual resources of the underlying volume.\",\n \"type\": \"object\"\n },\n \"conditions\": {\n \"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'.\",\n \"items\": {\n \"description\": \"PersistentVolumeClaimCondition contains details about state of pvc\",\n \"properties\": {\n \"lastProbeTime\": {\n \"description\": \"lastProbeTime is the time we probed the condition.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"lastTransitionTime\": {\n \"description\": \"lastTransitionTime is the time the condition transitioned from one status to another.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"message is the human-readable message indicating details about last transition.\",\n \"type\": \"string\"\n },\n \"reason\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"phase\": {\n \"description\": \"phase represents the current phase of PersistentVolumeClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"targetLimit\": {\n \"description\": \"TargetLimit defines a limit on the number of scraped targets that will be accepted. Only valid in Prometheus versions 2.45.0 and newer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"Defines the Pods' tolerations if specified.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches the triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"Defines the pod's topology spread constraints if specified.\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"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. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector. \\n This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"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).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"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 beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"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 beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"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 \\u003ckey, value\\u003e 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.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tracingConfig\": {\n \"description\": \"EXPERIMENTAL: TracingConfig configures tracing in Prometheus. This is an experimental feature, it may change in any upcoming release in a breaking way.\",\n \"properties\": {\n \"clientType\": {\n \"description\": \"Client used to export the traces. Supported values are `http` or `grpc`.\",\n \"enum\": [\n \"http\",\n \"grpc\"\n ],\n \"type\": \"string\"\n },\n \"compression\": {\n \"description\": \"Compression key for supported compression types. The only supported value is `gzip`.\",\n \"enum\": [\n \"gzip\"\n ],\n \"type\": \"string\"\n },\n \"endpoint\": {\n \"description\": \"Endpoint to send the traces to. Should be provided in format \\u003chost\\u003e:\\u003cport\\u003e.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Key-value pairs to be used as headers associated with gRPC or HTTP requests.\",\n \"type\": \"object\"\n },\n \"insecure\": {\n \"description\": \"If disabled, the client will use a secure connection.\",\n \"type\": \"boolean\"\n },\n \"samplingFraction\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Sets the probability a given trace will be sampled. Must be a float from 0 through 1.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"timeout\": {\n \"description\": \"Maximum time the exporter will wait for each batch export.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS Config to use when sending traces.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the Prometheus container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"endpoint\"\n ],\n \"type\": \"object\"\n },\n \"version\": {\n \"description\": \"Version of Prometheus being deployed. The operator uses this information to generate the Prometheus StatefulSet + configuration files. \\n If not specified, the operator assumes the latest upstream version of Prometheus available at the time when the version of the operator was released.\",\n \"type\": \"string\"\n },\n \"volumeMounts\": {\n \"description\": \"VolumeMounts allows the configuration of additional VolumeMounts. \\n VolumeMounts will be appended to other VolumeMounts in the 'prometheus' container, that are generated as a result of StorageSpec objects.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"description\": \"Volumes allows the 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.\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"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).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"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\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"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\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"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.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"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\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. \\n Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). \\n Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. \\n Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. \\n A pod can use both types of ephemeral volumes and persistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where `\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"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.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"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.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"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. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any 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, when namespace isn't specified in dataSourceRef, 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. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three 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. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"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\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"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.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker should be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"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.\",\n \"properties\": {\n \"directory\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"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\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"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.\",\n \"properties\": {\n \"path\": {\n \"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\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume Defaults to \\\"\\\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"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\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"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).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"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).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"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\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"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\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts. Default false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the token into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to Default is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"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\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to Defaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"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\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"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\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"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\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"walCompression\": {\n \"description\": \"Configures compression of the write-ahead log (WAL) using Snappy. \\n WAL compression is enabled by default for Prometheus \\u003e= 2.20.0 \\n Requires Prometheus v2.11.0 and above.\",\n \"type\": \"boolean\"\n },\n \"web\": {\n \"description\": \"Defines the configuration of the Prometheus web server.\",\n \"properties\": {\n \"httpConfig\": {\n \"description\": \"Defines HTTP parameters for web server.\",\n \"properties\": {\n \"headers\": {\n \"description\": \"List of headers that can be added to HTTP responses.\",\n \"properties\": {\n \"contentSecurityPolicy\": {\n \"description\": \"Set the Content-Security-Policy header to HTTP responses. Unset if blank.\",\n \"type\": \"string\"\n },\n \"strictTransportSecurity\": {\n \"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\",\n \"type\": \"string\"\n },\n \"xContentTypeOptions\": {\n \"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\",\n \"enum\": [\n \"\",\n \"NoSniff\"\n ],\n \"type\": \"string\"\n },\n \"xFrameOptions\": {\n \"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\",\n \"enum\": [\n \"\",\n \"Deny\",\n \"SameOrigin\"\n ],\n \"type\": \"string\"\n },\n \"xXSSProtection\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"http2\": {\n \"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.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"maxConnections\": {\n \"description\": \"Defines the maximum number of simultaneous connections A zero value means that Prometheus doesn't accept any incoming connection.\",\n \"format\": \"int32\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"pageTitle\": {\n \"description\": \"The prometheus web page title.\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"Defines the TLS parameters for HTTPS.\",\n \"properties\": {\n \"cert\": {\n \"description\": \"Contains the TLS certificate for the server.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"cipherSuites\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"clientAuthType\": {\n \"description\": \"Server policy for client authentication. Maps to ClientAuth Policies. For more detail on clientAuth options: https://golang.org/pkg/crypto/tls/#ClientAuthType\",\n \"type\": \"string\"\n },\n \"client_ca\": {\n \"description\": \"Contains the CA certificate for client certificate authentication to the server.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"curvePreferences\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the TLS key for the server.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"maxVersion\": {\n \"description\": \"Maximum TLS version that is acceptable. Defaults to TLS13.\",\n \"type\": \"string\"\n },\n \"minVersion\": {\n \"description\": \"Minimum TLS version that is acceptable. Defaults to TLS12.\",\n \"type\": \"string\"\n },\n \"preferServerCipherSuites\": {\n \"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.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"cert\",\n \"keySecret\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"title\": \"Prometheus Agent\",\n \"type\": \"object\"\n}", + "version": "monitoring.coreos.com/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Prometheus Agent", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz" + }, + "model": { + "category": { + "name": "Uncategorized" + }, + "displayName": "Dnation Kubernetes Monitoring Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n" + }, + "model": { + "version": "3.6.2" + }, + "name": "dnation-kubernetes-monitoring-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Uncategorized", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#F15B2A", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 103.7 112.7\" style=\"enable-background:new 0 0 103.7 112.7;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n .st0{fill:url(#SVGID_1_);}\n\u003c/style\u003e\n\u003clinearGradient id=\"SVGID_1_\" gradientUnits=\"userSpaceOnUse\" x1=\"51.85\" y1=\"1069.5107\" x2=\"51.85\" y2=\"966.6585\" gradientTransform=\"matrix(1 0 0 1 0 -931.4)\"\u003e\n \u003cstop offset=\"0\" style=\"stop-color:#FCEE1F\"/\u003e\n \u003cstop offset=\"1\" style=\"stop-color:#F15B2A\"/\u003e\n\u003c/linearGradient\u003e\n\u003cpath class=\"st0\" d=\"M103.5,49.9c-0.2-1.9-0.5-4.1-1.1-6.5c-0.6-2.4-1.6-5-2.9-7.8c-1.4-2.7-3.1-5.6-5.4-8.3\n c-0.9-1.1-1.9-2.1-2.9-3.2c1.6-6.3-1.9-11.8-1.9-11.8c-6.1-0.4-9.9,1.9-11.3,2.9c-0.2-0.1-0.5-0.2-0.7-0.3c-1-0.4-2.1-0.8-3.2-1.2\n c-1.1-0.3-2.2-0.7-3.3-0.9c-1.1-0.3-2.3-0.5-3.5-0.7c-0.2,0-0.4-0.1-0.6-0.1C64.1,3.6,56.5,0,56.5,0c-8.7,5.6-10.4,13.1-10.4,13.1\n s0,0.2-0.1,0.4c-0.5,0.1-0.9,0.3-1.4,0.4c-0.6,0.2-1.3,0.4-1.9,0.7c-0.6,0.3-1.3,0.5-1.9,0.8c-1.3,0.6-2.5,1.2-3.8,1.9\n c-1.2,0.7-2.4,1.4-3.5,2.2c-0.2-0.1-0.3-0.2-0.3-0.2c-11.7-4.5-22.1,0.9-22.1,0.9c-0.9,12.5,4.7,20.3,5.8,21.7\n c-0.3,0.8-0.5,1.5-0.8,2.3c-0.9,2.8-1.5,5.7-1.9,8.7c-0.1,0.4-0.1,0.9-0.2,1.3C3.2,59.5,0,70.5,0,70.5c9,10.4,19.6,11,19.6,11l0,0\n c1.3,2.4,2.9,4.7,4.6,6.8c0.7,0.9,1.5,1.7,2.3,2.6c-3.3,9.4,0.5,17.3,0.5,17.3c10.1,0.4,16.7-4.4,18.1-5.5c1,0.3,2,0.6,3,0.9\n c3.1,0.8,6.3,1.3,9.4,1.4c0.8,0,1.6,0,2.4,0h0.4h0.3h0.5h0.5l0,0c4.7,6.8,13.1,7.7,13.1,7.7c5.9-6.3,6.3-12.4,6.3-13.8l0,0\n c0,0,0,0,0-0.1s0-0.2,0-0.2l0,0c0-0.1,0-0.2,0-0.3c1.2-0.9,2.4-1.8,3.6-2.8c2.4-2.1,4.4-4.6,6.2-7.2c0.2-0.2,0.3-0.5,0.5-0.7\n c6.7,0.4,11.4-4.2,11.4-4.2c-1.1-7-5.1-10.4-5.9-11l0,0c0,0,0,0-0.1-0.1l-0.1-0.1l0,0l-0.1-0.1c0-0.4,0.1-0.8,0.1-1.3\n c0.1-0.8,0.1-1.5,0.1-2.3v-0.6v-0.3v-0.1c0-0.2,0-0.1,0-0.2v-0.5v-0.6c0-0.2,0-0.4,0-0.6s0-0.4-0.1-0.6l-0.1-0.6l-0.1-0.6\n c-0.1-0.8-0.3-1.5-0.4-2.3c-0.7-3-1.9-5.9-3.4-8.4c-1.6-2.6-3.5-4.8-5.7-6.8c-2.2-1.9-4.6-3.5-7.2-4.6c-2.6-1.2-5.2-1.9-7.9-2.2\n c-1.3-0.2-2.7-0.2-4-0.2h-0.5h-0.1H67h-0.2h-0.5c-0.2,0-0.4,0-0.5,0c-0.7,0.1-1.4,0.2-2,0.3c-2.7,0.5-5.2,1.5-7.4,2.8\n c-2.2,1.3-4.1,3-5.7,4.9s-2.8,3.9-3.6,6.1c-0.8,2.1-1.3,4.4-1.4,6.5c0,0.5,0,1.1,0,1.6c0,0.1,0,0.3,0,0.4v0.4c0,0.3,0,0.5,0.1,0.8\n c0.1,1.1,0.3,2.1,0.6,3.1c0.6,2,1.5,3.8,2.7,5.4s2.5,2.8,4,3.8s3,1.7,4.6,2.2s3.1,0.7,4.5,0.6c0.2,0,0.4,0,0.5,0s0.2,0,0.3,0\n s0.2,0,0.3,0c0.2,0,0.3,0,0.5,0h0.1H64c0.1,0,0.2,0,0.3,0c0.2,0,0.4-0.1,0.5-0.1c0.2,0,0.3-0.1,0.5-0.1c0.3-0.1,0.7-0.2,1-0.3\n c0.6-0.2,1.2-0.5,1.8-0.7c0.6-0.3,1.1-0.6,1.5-0.9c0.1-0.1,0.3-0.2,0.4-0.3c0.5-0.4,0.6-1.1,0.2-1.6c-0.4-0.4-1-0.5-1.5-0.3\n c-0.1,0.1-0.2,0.1-0.4,0.2c-0.4,0.2-0.9,0.4-1.3,0.5c-0.5,0.1-1,0.3-1.5,0.4c-0.3,0-0.5,0.1-0.8,0.1c-0.1,0-0.3,0-0.4,0\n c-0.1,0-0.3,0-0.4,0s-0.3,0-0.4,0c-0.2,0-0.3,0-0.5,0c0,0-0.1,0,0,0h-0.1h-0.1c-0.1,0-0.1,0-0.2,0s-0.3,0-0.4-0.1\n c-1.1-0.2-2.3-0.5-3.4-1s-2.2-1.2-3.1-2.1c-1-0.9-1.8-1.9-2.5-3.1s-1.1-2.5-1.3-3.8c-0.1-0.7-0.2-1.4-0.1-2.1c0-0.2,0-0.4,0-0.6\n c0,0.1,0,0,0,0v-0.1v-0.1c0-0.1,0-0.2,0-0.3c0-0.4,0.1-0.7,0.2-1.1c0.5-3,2-5.9,4.3-8.1c0.6-0.6,1.2-1.1,1.9-1.5\n c0.7-0.5,1.4-0.9,2.1-1.2s1.5-0.6,2.3-0.8s1.6-0.4,2.4-0.4c0.4,0,0.8-0.1,1.2-0.1c0.1,0,0.2,0,0.3,0h0.3H67c0.1,0,0,0,0,0h0.1h0.3\n c0.9,0.1,1.8,0.2,2.6,0.4c1.7,0.4,3.4,1,5,1.9c3.2,1.8,5.9,4.5,7.5,7.8c0.8,1.6,1.4,3.4,1.7,5.3c0.1,0.5,0.1,0.9,0.2,1.4v0.3V66\n c0,0.1,0,0.2,0,0.3c0,0.1,0,0.2,0,0.3v0.3v0.3c0,0.2,0,0.6,0,0.8c0,0.5-0.1,1-0.1,1.5c-0.1,0.5-0.1,1-0.2,1.5\n c-0.1,0.5-0.2,1-0.3,1.5c-0.2,1-0.6,1.9-0.9,2.9c-0.7,1.9-1.7,3.7-2.9,5.3c-2.4,3.3-5.7,6-9.4,7.7c-1.9,0.8-3.8,1.5-5.8,1.8\n c-1,0.2-2,0.3-3,0.3h-0.2h-0.2h-0.3h-0.5h-0.3c0.1,0,0,0,0,0h-0.1c-0.5,0-1.1,0-1.6-0.1c-2.2-0.2-4.3-0.6-6.4-1.2s-4.1-1.4-6-2.4\n c-3.8-2-7.2-4.9-9.9-8.2c-1.3-1.7-2.5-3.5-3.5-5.4s-1.7-3.9-2.3-5.9s-0.9-4.1-1-6.2v-0.4v-0.1v-0.1v-0.2V60v-0.1v-0.1v-0.2v-0.5V59\n l0,0v-0.2c0-0.3,0-0.5,0-0.8c0-1,0.1-2.1,0.3-3.2c0.1-1.1,0.3-2.1,0.5-3.2c0.2-1.1,0.5-2.1,0.8-3.2c0.6-2.1,1.3-4.1,2.2-6\n c1.8-3.8,4.1-7.2,6.8-9.9c0.7-0.7,1.4-1.3,2.2-1.9c0.3-0.3,1-0.9,1.8-1.4s1.6-1,2.5-1.4c0.4-0.2,0.8-0.4,1.3-0.6\n c0.2-0.1,0.4-0.2,0.7-0.3c0.2-0.1,0.4-0.2,0.7-0.3c0.9-0.4,1.8-0.7,2.7-1c0.2-0.1,0.5-0.1,0.7-0.2s0.5-0.1,0.7-0.2\n c0.5-0.1,0.9-0.2,1.4-0.4c0.2-0.1,0.5-0.1,0.7-0.2c0.2,0,0.5-0.1,0.7-0.1s0.5-0.1,0.7-0.1l0.4-0.1l0.4-0.1c0.2,0,0.5-0.1,0.7-0.1\n c0.3,0,0.5-0.1,0.8-0.1c0.2,0,0.6-0.1,0.8-0.1c0.2,0,0.3,0,0.5-0.1h0.3H61h0.2c0.3,0,0.5,0,0.8-0.1h0.4c0,0,0.1,0,0,0h0.1h0.2\n c0.2,0,0.5,0,0.7,0c0.9,0,1.8,0,2.7,0c1.8,0.1,3.6,0.3,5.3,0.6c3.4,0.6,6.7,1.7,9.6,3.2c2.9,1.4,5.6,3.2,7.8,5.1\n c0.1,0.1,0.3,0.2,0.4,0.4c0.1,0.1,0.3,0.2,0.4,0.4c0.3,0.2,0.5,0.5,0.8,0.7s0.5,0.5,0.8,0.7c0.2,0.3,0.5,0.5,0.7,0.8\n c1,1,1.9,2.1,2.7,3.1c1.6,2.1,2.9,4.2,3.9,6.2c0.1,0.1,0.1,0.2,0.2,0.4c0.1,0.1,0.1,0.2,0.2,0.4c0.1,0.2,0.2,0.5,0.4,0.7\n c0.1,0.2,0.2,0.5,0.3,0.7c0.1,0.2,0.2,0.5,0.3,0.7c0.4,0.9,0.7,1.8,1,2.7c0.5,1.4,0.8,2.6,1.1,3.6c0.1,0.4,0.5,0.7,0.9,0.7\n c0.5,0,0.8-0.4,0.8-0.9C103.6,52.7,103.6,51.4,103.5,49.9z\"/\u003e\n\u003c/svg\u003e\n", + "svgWhite": "\u003csvg width=\"86\" height=\"62\" viewBox=\"0 0 86 62\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003ccircle cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003cpath d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M34 62V34H40V62H34Z\" fill=\"white\"/\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"/\u003e\n\u003c/svg\u003e\r" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/PrometheusRule.json b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/PrometheusRule.json new file mode 100644 index 00000000000..8e36fc3458a --- /dev/null +++ b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/PrometheusRule.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "PrometheusRule", + "schema": "{\n \"description\": \"PrometheusRule defines recording and alerting rules for a Prometheus instance\",\n \"properties\": {\n \"spec\": {\n \"description\": \"Specification of desired alerting rule definitions for Prometheus.\",\n \"properties\": {\n \"groups\": {\n \"description\": \"Content of Prometheus rule file\",\n \"items\": {\n \"description\": \"RuleGroup is a list of sequentially evaluated recording and alerting rules.\",\n \"properties\": {\n \"interval\": {\n \"description\": \"Interval determines how often rules in the group are evaluated.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"limit\": {\n \"description\": \"Limit the number of alerts an alerting rule and series a recording rule can produce. Limit is supported starting with Prometheus \\u003e= 2.31 and Thanos Ruler \\u003e= 0.24.\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"Name of the rule group.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"partial_response_strategy\": {\n \"description\": \"PartialResponseStrategy is only used by ThanosRuler and will be ignored by Prometheus instances. More info: https://github.com/thanos-io/thanos/blob/main/docs/components/rule.md#partial-response\",\n \"pattern\": \"^(?i)(abort|warn)?$\",\n \"type\": \"string\"\n },\n \"rules\": {\n \"description\": \"List of alerting and recording rules.\",\n \"items\": {\n \"description\": \"Rule describes an alerting or recording rule See Prometheus documentation: [alerting](https://www.prometheus.io/docs/prometheus/latest/configuration/alerting_rules/) or [recording](https://www.prometheus.io/docs/prometheus/latest/configuration/recording_rules/#recording-rules) rule\",\n \"properties\": {\n \"alert\": {\n \"description\": \"Name of the alert. Must be a valid label value. Only one of `record` and `alert` must be set.\",\n \"type\": \"string\"\n },\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations to add to each alert. Only valid for alerting rules.\",\n \"type\": \"object\"\n },\n \"expr\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"PromQL expression to evaluate.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"for\": {\n \"description\": \"Alerts are considered firing once they have been returned for this long.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"keep_firing_for\": {\n \"description\": \"KeepFiringFor defines how long an alert will continue firing after the condition that triggered it has cleared.\",\n \"minLength\": 1,\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels to add or overwrite.\",\n \"type\": \"object\"\n },\n \"record\": {\n \"description\": \"Name of the time series to output to. Must be a valid metric name. Only one of `record` and `alert` must be set.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"expr\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"title\": \"Prometheus Rule\",\n \"type\": \"object\"\n}", + "version": "monitoring.coreos.com/v1" + }, + "configuration": null, + "description": "", + "displayName": "Prometheus Rule", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz" + }, + "model": { + "category": { + "name": "Uncategorized" + }, + "displayName": "Dnation Kubernetes Monitoring Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n" + }, + "model": { + "version": "3.6.2" + }, + "name": "dnation-kubernetes-monitoring-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Uncategorized", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#F15B2A", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 103.7 112.7\" style=\"enable-background:new 0 0 103.7 112.7;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n .st0{fill:url(#SVGID_1_);}\n\u003c/style\u003e\n\u003clinearGradient id=\"SVGID_1_\" gradientUnits=\"userSpaceOnUse\" x1=\"51.85\" y1=\"1069.5107\" x2=\"51.85\" y2=\"966.6585\" gradientTransform=\"matrix(1 0 0 1 0 -931.4)\"\u003e\n \u003cstop offset=\"0\" style=\"stop-color:#FCEE1F\"/\u003e\n \u003cstop offset=\"1\" style=\"stop-color:#F15B2A\"/\u003e\n\u003c/linearGradient\u003e\n\u003cpath class=\"st0\" d=\"M103.5,49.9c-0.2-1.9-0.5-4.1-1.1-6.5c-0.6-2.4-1.6-5-2.9-7.8c-1.4-2.7-3.1-5.6-5.4-8.3\n c-0.9-1.1-1.9-2.1-2.9-3.2c1.6-6.3-1.9-11.8-1.9-11.8c-6.1-0.4-9.9,1.9-11.3,2.9c-0.2-0.1-0.5-0.2-0.7-0.3c-1-0.4-2.1-0.8-3.2-1.2\n c-1.1-0.3-2.2-0.7-3.3-0.9c-1.1-0.3-2.3-0.5-3.5-0.7c-0.2,0-0.4-0.1-0.6-0.1C64.1,3.6,56.5,0,56.5,0c-8.7,5.6-10.4,13.1-10.4,13.1\n s0,0.2-0.1,0.4c-0.5,0.1-0.9,0.3-1.4,0.4c-0.6,0.2-1.3,0.4-1.9,0.7c-0.6,0.3-1.3,0.5-1.9,0.8c-1.3,0.6-2.5,1.2-3.8,1.9\n c-1.2,0.7-2.4,1.4-3.5,2.2c-0.2-0.1-0.3-0.2-0.3-0.2c-11.7-4.5-22.1,0.9-22.1,0.9c-0.9,12.5,4.7,20.3,5.8,21.7\n c-0.3,0.8-0.5,1.5-0.8,2.3c-0.9,2.8-1.5,5.7-1.9,8.7c-0.1,0.4-0.1,0.9-0.2,1.3C3.2,59.5,0,70.5,0,70.5c9,10.4,19.6,11,19.6,11l0,0\n c1.3,2.4,2.9,4.7,4.6,6.8c0.7,0.9,1.5,1.7,2.3,2.6c-3.3,9.4,0.5,17.3,0.5,17.3c10.1,0.4,16.7-4.4,18.1-5.5c1,0.3,2,0.6,3,0.9\n c3.1,0.8,6.3,1.3,9.4,1.4c0.8,0,1.6,0,2.4,0h0.4h0.3h0.5h0.5l0,0c4.7,6.8,13.1,7.7,13.1,7.7c5.9-6.3,6.3-12.4,6.3-13.8l0,0\n c0,0,0,0,0-0.1s0-0.2,0-0.2l0,0c0-0.1,0-0.2,0-0.3c1.2-0.9,2.4-1.8,3.6-2.8c2.4-2.1,4.4-4.6,6.2-7.2c0.2-0.2,0.3-0.5,0.5-0.7\n c6.7,0.4,11.4-4.2,11.4-4.2c-1.1-7-5.1-10.4-5.9-11l0,0c0,0,0,0-0.1-0.1l-0.1-0.1l0,0l-0.1-0.1c0-0.4,0.1-0.8,0.1-1.3\n c0.1-0.8,0.1-1.5,0.1-2.3v-0.6v-0.3v-0.1c0-0.2,0-0.1,0-0.2v-0.5v-0.6c0-0.2,0-0.4,0-0.6s0-0.4-0.1-0.6l-0.1-0.6l-0.1-0.6\n c-0.1-0.8-0.3-1.5-0.4-2.3c-0.7-3-1.9-5.9-3.4-8.4c-1.6-2.6-3.5-4.8-5.7-6.8c-2.2-1.9-4.6-3.5-7.2-4.6c-2.6-1.2-5.2-1.9-7.9-2.2\n c-1.3-0.2-2.7-0.2-4-0.2h-0.5h-0.1H67h-0.2h-0.5c-0.2,0-0.4,0-0.5,0c-0.7,0.1-1.4,0.2-2,0.3c-2.7,0.5-5.2,1.5-7.4,2.8\n c-2.2,1.3-4.1,3-5.7,4.9s-2.8,3.9-3.6,6.1c-0.8,2.1-1.3,4.4-1.4,6.5c0,0.5,0,1.1,0,1.6c0,0.1,0,0.3,0,0.4v0.4c0,0.3,0,0.5,0.1,0.8\n c0.1,1.1,0.3,2.1,0.6,3.1c0.6,2,1.5,3.8,2.7,5.4s2.5,2.8,4,3.8s3,1.7,4.6,2.2s3.1,0.7,4.5,0.6c0.2,0,0.4,0,0.5,0s0.2,0,0.3,0\n s0.2,0,0.3,0c0.2,0,0.3,0,0.5,0h0.1H64c0.1,0,0.2,0,0.3,0c0.2,0,0.4-0.1,0.5-0.1c0.2,0,0.3-0.1,0.5-0.1c0.3-0.1,0.7-0.2,1-0.3\n c0.6-0.2,1.2-0.5,1.8-0.7c0.6-0.3,1.1-0.6,1.5-0.9c0.1-0.1,0.3-0.2,0.4-0.3c0.5-0.4,0.6-1.1,0.2-1.6c-0.4-0.4-1-0.5-1.5-0.3\n c-0.1,0.1-0.2,0.1-0.4,0.2c-0.4,0.2-0.9,0.4-1.3,0.5c-0.5,0.1-1,0.3-1.5,0.4c-0.3,0-0.5,0.1-0.8,0.1c-0.1,0-0.3,0-0.4,0\n c-0.1,0-0.3,0-0.4,0s-0.3,0-0.4,0c-0.2,0-0.3,0-0.5,0c0,0-0.1,0,0,0h-0.1h-0.1c-0.1,0-0.1,0-0.2,0s-0.3,0-0.4-0.1\n c-1.1-0.2-2.3-0.5-3.4-1s-2.2-1.2-3.1-2.1c-1-0.9-1.8-1.9-2.5-3.1s-1.1-2.5-1.3-3.8c-0.1-0.7-0.2-1.4-0.1-2.1c0-0.2,0-0.4,0-0.6\n c0,0.1,0,0,0,0v-0.1v-0.1c0-0.1,0-0.2,0-0.3c0-0.4,0.1-0.7,0.2-1.1c0.5-3,2-5.9,4.3-8.1c0.6-0.6,1.2-1.1,1.9-1.5\n c0.7-0.5,1.4-0.9,2.1-1.2s1.5-0.6,2.3-0.8s1.6-0.4,2.4-0.4c0.4,0,0.8-0.1,1.2-0.1c0.1,0,0.2,0,0.3,0h0.3H67c0.1,0,0,0,0,0h0.1h0.3\n c0.9,0.1,1.8,0.2,2.6,0.4c1.7,0.4,3.4,1,5,1.9c3.2,1.8,5.9,4.5,7.5,7.8c0.8,1.6,1.4,3.4,1.7,5.3c0.1,0.5,0.1,0.9,0.2,1.4v0.3V66\n c0,0.1,0,0.2,0,0.3c0,0.1,0,0.2,0,0.3v0.3v0.3c0,0.2,0,0.6,0,0.8c0,0.5-0.1,1-0.1,1.5c-0.1,0.5-0.1,1-0.2,1.5\n c-0.1,0.5-0.2,1-0.3,1.5c-0.2,1-0.6,1.9-0.9,2.9c-0.7,1.9-1.7,3.7-2.9,5.3c-2.4,3.3-5.7,6-9.4,7.7c-1.9,0.8-3.8,1.5-5.8,1.8\n c-1,0.2-2,0.3-3,0.3h-0.2h-0.2h-0.3h-0.5h-0.3c0.1,0,0,0,0,0h-0.1c-0.5,0-1.1,0-1.6-0.1c-2.2-0.2-4.3-0.6-6.4-1.2s-4.1-1.4-6-2.4\n c-3.8-2-7.2-4.9-9.9-8.2c-1.3-1.7-2.5-3.5-3.5-5.4s-1.7-3.9-2.3-5.9s-0.9-4.1-1-6.2v-0.4v-0.1v-0.1v-0.2V60v-0.1v-0.1v-0.2v-0.5V59\n l0,0v-0.2c0-0.3,0-0.5,0-0.8c0-1,0.1-2.1,0.3-3.2c0.1-1.1,0.3-2.1,0.5-3.2c0.2-1.1,0.5-2.1,0.8-3.2c0.6-2.1,1.3-4.1,2.2-6\n c1.8-3.8,4.1-7.2,6.8-9.9c0.7-0.7,1.4-1.3,2.2-1.9c0.3-0.3,1-0.9,1.8-1.4s1.6-1,2.5-1.4c0.4-0.2,0.8-0.4,1.3-0.6\n c0.2-0.1,0.4-0.2,0.7-0.3c0.2-0.1,0.4-0.2,0.7-0.3c0.9-0.4,1.8-0.7,2.7-1c0.2-0.1,0.5-0.1,0.7-0.2s0.5-0.1,0.7-0.2\n c0.5-0.1,0.9-0.2,1.4-0.4c0.2-0.1,0.5-0.1,0.7-0.2c0.2,0,0.5-0.1,0.7-0.1s0.5-0.1,0.7-0.1l0.4-0.1l0.4-0.1c0.2,0,0.5-0.1,0.7-0.1\n c0.3,0,0.5-0.1,0.8-0.1c0.2,0,0.6-0.1,0.8-0.1c0.2,0,0.3,0,0.5-0.1h0.3H61h0.2c0.3,0,0.5,0,0.8-0.1h0.4c0,0,0.1,0,0,0h0.1h0.2\n c0.2,0,0.5,0,0.7,0c0.9,0,1.8,0,2.7,0c1.8,0.1,3.6,0.3,5.3,0.6c3.4,0.6,6.7,1.7,9.6,3.2c2.9,1.4,5.6,3.2,7.8,5.1\n c0.1,0.1,0.3,0.2,0.4,0.4c0.1,0.1,0.3,0.2,0.4,0.4c0.3,0.2,0.5,0.5,0.8,0.7s0.5,0.5,0.8,0.7c0.2,0.3,0.5,0.5,0.7,0.8\n c1,1,1.9,2.1,2.7,3.1c1.6,2.1,2.9,4.2,3.9,6.2c0.1,0.1,0.1,0.2,0.2,0.4c0.1,0.1,0.1,0.2,0.2,0.4c0.1,0.2,0.2,0.5,0.4,0.7\n c0.1,0.2,0.2,0.5,0.3,0.7c0.1,0.2,0.2,0.5,0.3,0.7c0.4,0.9,0.7,1.8,1,2.7c0.5,1.4,0.8,2.6,1.1,3.6c0.1,0.4,0.5,0.7,0.9,0.7\n c0.5,0,0.8-0.4,0.8-0.9C103.6,52.7,103.6,51.4,103.5,49.9z\"/\u003e\n\u003c/svg\u003e\n", + "svgWhite": "\u003csvg width=\"86\" height=\"62\" viewBox=\"0 0 86 62\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003ccircle cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003cpath d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M34 62V34H40V62H34Z\" fill=\"white\"/\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"/\u003e\n\u003c/svg\u003e\r" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/ScrapeConfig.json b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/ScrapeConfig.json new file mode 100644 index 00000000000..3d48e377cda --- /dev/null +++ b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/ScrapeConfig.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "ScrapeConfig", + "schema": "{\n \"description\": \"ScrapeConfig defines a namespaced Prometheus scrape_config to be aggregated across multiple namespaces into the Prometheus configuration.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"ScrapeConfigSpec is a specification of the desired configuration for a scrape configuration.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization header to use on every scrape request.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth information to use on every scrape request.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"consulSDConfigs\": {\n \"description\": \"ConsulSDConfigs defines a list of Consul service discovery configurations.\",\n \"items\": {\n \"description\": \"ConsulSDConfig defines a Consul service discovery configuration See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#consul_sd_config\",\n \"properties\": {\n \"allow_stale\": {\n \"description\": \"Allow stale Consul results (see https://www.consul.io/api/features/consistency.html). Will reduce load on Consul. If unset, Prometheus uses its default value.\",\n \"type\": \"boolean\"\n },\n \"authorization\": {\n \"description\": \"Authorization header configuration to authenticate against the Consul Server.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth information to authenticate against the Consul Server. More info: https://prometheus.io/docs/operating/configuration/#endpoints\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"datacenter\": {\n \"description\": \"Consul Datacenter name, if not provided it will use the local Consul Agent Datacenter.\",\n \"type\": \"string\"\n },\n \"enable_http2\": {\n \"description\": \"Whether to enable HTTP2. If unset, Prometheus uses its default value.\",\n \"type\": \"boolean\"\n },\n \"follow_redirects\": {\n \"description\": \"Configure whether HTTP requests follow HTTP 3xx redirects. If unset, Prometheus uses its default value.\",\n \"type\": \"boolean\"\n },\n \"namespace\": {\n \"description\": \"Namespaces are only supported in Consul Enterprise.\",\n \"type\": \"string\"\n },\n \"no_proxy\": {\n \"description\": \"Comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\",\n \"type\": \"string\"\n },\n \"node_meta\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Node metadata key/value pairs to filter nodes for a given service.\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"oauth2\": {\n \"description\": \"Optional OAuth 2.0 configuration.\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"partition\": {\n \"description\": \"Admin Partitions are only supported in Consul Enterprise.\",\n \"type\": \"string\"\n },\n \"proxy_connect_header\": {\n \"additionalProperties\": {\n \"description\": \"SecretKeySelector selects a key of a Secret.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"description\": \"Specifies headers to send to proxies during CONNECT requests.\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"proxy_from_environment\": {\n \"description\": \"Use proxy URL indicated by environment variables (HTTP_PROXY, https_proxy, HTTPs_PROXY, https_proxy, and no_proxy) If unset, Prometheus uses its default value.\",\n \"type\": \"boolean\"\n },\n \"proxy_url\": {\n \"description\": \"Optional proxy URL.\",\n \"type\": \"string\"\n },\n \"refresh_interval\": {\n \"description\": \"The time after which the provided names are refreshed. On large setup it might be a good idea to increase this value because the catalog will change all the time. If unset, Prometheus uses its default value.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"scheme\": {\n \"description\": \"HTTP Scheme default \\\"http\\\"\",\n \"enum\": [\n \"HTTP\",\n \"HTTPS\"\n ],\n \"type\": \"string\"\n },\n \"server\": {\n \"description\": \"A valid string consisting of a hostname or IP followed by an optional port number.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"services\": {\n \"description\": \"A list of services for which targets are retrieved. If omitted, all services are scraped.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"tag_separator\": {\n \"description\": \"The string by which Consul tags are joined into the tag label. If unset, Prometheus uses its default value.\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"An optional list of tags used to filter nodes for a given service. Services must contain all tags in the list.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS Config\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tokenRef\": {\n \"description\": \"Consul ACL TokenRef, if not provided it will use the ACL from the local Consul Agent.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"dnsSDConfigs\": {\n \"description\": \"DNSSDConfigs defines a list of DNS service discovery configurations.\",\n \"items\": {\n \"description\": \"DNSSDConfig allows specifying a set of DNS domain names which are periodically queried to discover a list of targets. The DNS servers to be contacted are read from /etc/resolv.conf. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#dns_sd_config\",\n \"properties\": {\n \"names\": {\n \"description\": \"A list of DNS domain names to be queried.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"minItems\": 1,\n \"type\": \"array\"\n },\n \"port\": {\n \"description\": \"The port number used if the query type is not SRV Ignored for SRV records\",\n \"type\": \"integer\"\n },\n \"refreshInterval\": {\n \"description\": \"RefreshInterval configures the time after which the provided names are refreshed. If not set, Prometheus uses its default value.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The type of DNS query to perform. One of SRV, A, AAAA or MX. If not set, Prometheus uses its default value.\",\n \"enum\": [\n \"SRV\",\n \"A\",\n \"AAAA\",\n \"MX\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"names\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"ec2SDConfigs\": {\n \"description\": \"EC2SDConfigs defines a list of EC2 service discovery configurations.\",\n \"items\": {\n \"description\": \"EC2SDConfig allow retrieving scrape targets from AWS EC2 instances. The private IP address is used by default, but may be changed to the public IP address with relabeling. The IAM credentials used must have the ec2:DescribeInstances permission to discover scrape targets See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#ec2_sd_config\",\n \"properties\": {\n \"accessKey\": {\n \"description\": \"AccessKey is the AWS API key.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"filters\": {\n \"description\": \"Filters can be used optionally to filter the instance list by other criteria. Available filter criteria can be found here: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html Filter API documentation: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_Filter.html\",\n \"items\": {\n \"description\": \"EC2Filter is the configuration for filtering EC2 instances.\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\",\n \"values\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"port\": {\n \"description\": \"The port to scrape metrics from. If using the public IP address, this must instead be specified in the relabeling rule.\",\n \"type\": \"integer\"\n },\n \"refreshInterval\": {\n \"description\": \"RefreshInterval configures the refresh interval at which Prometheus will re-read the instance list.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"The AWS region\",\n \"type\": \"string\"\n },\n \"roleARN\": {\n \"description\": \"AWS Role ARN, an alternative to using AWS API keys.\",\n \"type\": \"string\"\n },\n \"secretKey\": {\n \"description\": \"SecretKey is the AWS API secret.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"fileSDConfigs\": {\n \"description\": \"FileSDConfigs defines a list of file service discovery configurations.\",\n \"items\": {\n \"description\": \"FileSDConfig defines a Prometheus file service discovery configuration See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#file_sd_config\",\n \"properties\": {\n \"files\": {\n \"description\": \"List of files to be used for file discovery. Recommendation: use absolute paths. While relative paths work, the prometheus-operator project makes no guarantees about the working directory where the configuration file is stored. Files must be mounted using Prometheus.ConfigMaps or Prometheus.Secrets.\",\n \"items\": {\n \"description\": \"SDFile represents a file used for service discovery\",\n \"pattern\": \"^[^*]*(\\\\*[^/]*)?\\\\.(json|yml|yaml|JSON|YML|YAML)$\",\n \"type\": \"string\"\n },\n \"minItems\": 1,\n \"type\": \"array\"\n },\n \"refreshInterval\": {\n \"description\": \"RefreshInterval configures the refresh interval at which Prometheus will reload the content of the files.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"files\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"honorLabels\": {\n \"description\": \"HonorLabels chooses the metric's labels on collisions with target labels.\",\n \"type\": \"boolean\"\n },\n \"honorTimestamps\": {\n \"description\": \"HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data.\",\n \"type\": \"boolean\"\n },\n \"httpSDConfigs\": {\n \"description\": \"HTTPSDConfigs defines a list of HTTP service discovery configurations.\",\n \"items\": {\n \"description\": \"HTTPSDConfig defines a prometheus HTTP service discovery configuration See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#http_sd_config\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization header configuration to authenticate against the target HTTP endpoint.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth information to authenticate against the target HTTP endpoint. More info: https://prometheus.io/docs/operating/configuration/#endpoints\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"refreshInterval\": {\n \"description\": \"RefreshInterval configures the refresh interval at which Prometheus will re-query the endpoint to update the target list.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration applying to the target HTTP endpoint.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"url\": {\n \"description\": \"URL from which the targets are fetched.\",\n \"minLength\": 1,\n \"pattern\": \"^http(s)?://.+$\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"keepDroppedTargets\": {\n \"description\": \"Per-scrape limit on the number of targets dropped by relabeling that will be kept in memory. 0 means no limit. \\n It requires Prometheus \\u003e= v2.47.0.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"kubernetesSDConfigs\": {\n \"description\": \"KubernetesSDConfigs defines a list of Kubernetes service discovery configurations.\",\n \"items\": {\n \"description\": \"KubernetesSDConfig allows retrieving scrape targets from Kubernetes' REST API. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config\",\n \"properties\": {\n \"role\": {\n \"description\": \"Role of the Kubernetes entities that should be discovered.\",\n \"enum\": [\n \"Node\",\n \"node\"\n ],\n \"type\": \"string\"\n },\n \"selectors\": {\n \"description\": \"Selector to select objects.\",\n \"items\": {\n \"description\": \"K8SSelectorConfig is Kubernetes Selector Config\",\n \"properties\": {\n \"field\": {\n \"type\": \"string\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"K8SRole is role of the service in Kubernetes. Currently the only supported role is \\\"Node\\\".\",\n \"enum\": [\n \"Node\",\n \"node\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"role\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"role\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n }\n },\n \"required\": [\n \"role\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"labelLimit\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"labelNameLengthLimit\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"labelValueLengthLimit\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"metricRelabelings\": {\n \"description\": \"MetricRelabelConfigs to apply to samples before ingestion.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\",\n \"properties\": {\n \"action\": {\n \"default\": \"replace\",\n \"description\": \"Action to perform based on the regex matching. \\n `Uppercase` and `Lowercase` actions require Prometheus \\u003e= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus \\u003e= v2.41.0. \\n Default: \\\"Replace\\\"\",\n \"enum\": [\n \"replace\",\n \"Replace\",\n \"keep\",\n \"Keep\",\n \"drop\",\n \"Drop\",\n \"hashmod\",\n \"HashMod\",\n \"labelmap\",\n \"LabelMap\",\n \"labeldrop\",\n \"LabelDrop\",\n \"labelkeep\",\n \"LabelKeep\",\n \"lowercase\",\n \"Lowercase\",\n \"uppercase\",\n \"Uppercase\",\n \"keepequal\",\n \"KeepEqual\",\n \"dropequal\",\n \"DropEqual\"\n ],\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values. \\n Only applicable when the action is `HashMod`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched.\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a Replace action is performed if the regular expression matches. \\n Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator is the string between concatenated SourceLabels.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.\",\n \"items\": {\n \"description\": \"LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\",\n \"pattern\": \"^[a-zA-Z_][a-zA-Z0-9_]*$\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting string is written in a replacement. \\n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \\n Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"metricsPath\": {\n \"description\": \"MetricsPath HTTP path to scrape for metrics. If empty, Prometheus uses the default value (e.g. /metrics).\",\n \"type\": \"string\"\n },\n \"params\": {\n \"additionalProperties\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"description\": \"Optional HTTP URL parameters\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"relabelings\": {\n \"description\": \"RelabelConfigs defines how to rewrite the target's labels 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\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\",\n \"properties\": {\n \"action\": {\n \"default\": \"replace\",\n \"description\": \"Action to perform based on the regex matching. \\n `Uppercase` and `Lowercase` actions require Prometheus \\u003e= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus \\u003e= v2.41.0. \\n Default: \\\"Replace\\\"\",\n \"enum\": [\n \"replace\",\n \"Replace\",\n \"keep\",\n \"Keep\",\n \"drop\",\n \"Drop\",\n \"hashmod\",\n \"HashMod\",\n \"labelmap\",\n \"LabelMap\",\n \"labeldrop\",\n \"LabelDrop\",\n \"labelkeep\",\n \"LabelKeep\",\n \"lowercase\",\n \"Lowercase\",\n \"uppercase\",\n \"Uppercase\",\n \"keepequal\",\n \"KeepEqual\",\n \"dropequal\",\n \"DropEqual\"\n ],\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values. \\n Only applicable when the action is `HashMod`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched.\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a Replace action is performed if the regular expression matches. \\n Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator is the string between concatenated SourceLabels.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.\",\n \"items\": {\n \"description\": \"LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\",\n \"pattern\": \"^[a-zA-Z_][a-zA-Z0-9_]*$\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting string is written in a replacement. \\n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \\n Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sampleLimit\": {\n \"description\": \"SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"scheme\": {\n \"description\": \"Configures the protocol scheme used for requests. If empty, Prometheus uses HTTP by default.\",\n \"enum\": [\n \"HTTP\",\n \"HTTPS\"\n ],\n \"type\": \"string\"\n },\n \"scrapeInterval\": {\n \"description\": \"ScrapeInterval is the interval between consecutive scrapes.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"scrapeTimeout\": {\n \"description\": \"ScrapeTimeout is the number of seconds to wait until a scrape request times out.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"staticConfigs\": {\n \"description\": \"StaticConfigs defines a list of static targets with a common label set.\",\n \"items\": {\n \"description\": \"StaticConfig defines a Prometheus static configuration. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\",\n \"properties\": {\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels assigned to all metrics scraped from the targets.\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targets\": {\n \"description\": \"List of targets for this static configuration.\",\n \"items\": {\n \"description\": \"Target represents a target for Prometheus to scrape\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"targetLimit\": {\n \"description\": \"TargetLimit defines a limit on the number of scraped targets that will be accepted.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration to use on every scrape request\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"title\": \"Scrape Config\",\n \"type\": \"object\"\n}", + "version": "monitoring.coreos.com/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Scrape Config", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz" + }, + "model": { + "category": { + "name": "Uncategorized" + }, + "displayName": "Dnation Kubernetes Monitoring Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n" + }, + "model": { + "version": "3.6.2" + }, + "name": "dnation-kubernetes-monitoring-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Uncategorized", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"86\" height=\"62\" viewBox=\"0 0 86 62\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003ccircle cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"/\u003e\n\u003ccircle cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"/\u003e\n\u003ccircle cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"/\u003e\n\u003cpath d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"/\u003e\n\u003cpath d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"/\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"/\u003e\n\u003c/svg\u003e\r", + "svgWhite": "\u003csvg width=\"86\" height=\"62\" viewBox=\"0 0 86 62\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003ccircle cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003cpath d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M34 62V34H40V62H34Z\" fill=\"white\"/\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"/\u003e\n\u003c/svg\u003e\r" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/ServiceMonitor.json b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/ServiceMonitor.json new file mode 100644 index 00000000000..8ae47ab2c29 --- /dev/null +++ b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/ServiceMonitor.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "ServiceMonitor", + "schema": "{\n \"description\": \"ServiceMonitor defines monitoring for a set of services.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"Specification of desired Service selection for target discovery by Prometheus.\",\n \"properties\": {\n \"attachMetadata\": {\n \"description\": \"Attaches node metadata to discovered targets. Requires Prometheus v2.37.0 and above.\",\n \"properties\": {\n \"node\": {\n \"description\": \"When set to true, Prometheus must have permissions to get Nodes.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"endpoints\": {\n \"description\": \"A list of endpoints allowed as part of this ServiceMonitor.\",\n \"items\": {\n \"description\": \"Endpoint defines a scrapeable endpoint serving Prometheus metrics.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization section for this endpoint\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Selects a key of a Secret in the namespace that contains the credentials for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": {\n \"description\": \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication More info: https://prometheus.io/docs/operating/configuration/#endpoints\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service monitor namespace that contains the password for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service monitor namespace that contains the username for authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenFile\": {\n \"description\": \"File to read bearer token for scraping targets.\",\n \"type\": \"string\"\n },\n \"bearerTokenSecret\": {\n \"description\": \"Secret to mount to read bearer token for scraping targets. The secret needs to be in the same namespace as the service monitor and accessible by the Prometheus Operator.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"enableHttp2\": {\n \"description\": \"Whether to enable HTTP2.\",\n \"type\": \"boolean\"\n },\n \"filterRunning\": {\n \"description\": \"Drop pods that are not running. (Failed, Succeeded). Enabled by default. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase\",\n \"type\": \"boolean\"\n },\n \"followRedirects\": {\n \"description\": \"FollowRedirects configures whether scrape requests follow HTTP 3xx redirects.\",\n \"type\": \"boolean\"\n },\n \"honorLabels\": {\n \"description\": \"HonorLabels chooses the metric's labels on collisions with target labels.\",\n \"type\": \"boolean\"\n },\n \"honorTimestamps\": {\n \"description\": \"HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data.\",\n \"type\": \"boolean\"\n },\n \"interval\": {\n \"description\": \"Interval at which metrics should be scraped If not specified Prometheus' global scrape interval is used.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"metricRelabelings\": {\n \"description\": \"MetricRelabelConfigs to apply to samples before ingestion.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\",\n \"properties\": {\n \"action\": {\n \"default\": \"replace\",\n \"description\": \"Action to perform based on the regex matching. \\n `Uppercase` and `Lowercase` actions require Prometheus \\u003e= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus \\u003e= v2.41.0. \\n Default: \\\"Replace\\\"\",\n \"enum\": [\n \"replace\",\n \"Replace\",\n \"keep\",\n \"Keep\",\n \"drop\",\n \"Drop\",\n \"hashmod\",\n \"HashMod\",\n \"labelmap\",\n \"LabelMap\",\n \"labeldrop\",\n \"LabelDrop\",\n \"labelkeep\",\n \"LabelKeep\",\n \"lowercase\",\n \"Lowercase\",\n \"uppercase\",\n \"Uppercase\",\n \"keepequal\",\n \"KeepEqual\",\n \"dropequal\",\n \"DropEqual\"\n ],\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values. \\n Only applicable when the action is `HashMod`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched.\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a Replace action is performed if the regular expression matches. \\n Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator is the string between concatenated SourceLabels.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.\",\n \"items\": {\n \"description\": \"LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\",\n \"pattern\": \"^[a-zA-Z_][a-zA-Z0-9_]*$\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting string is written in a replacement. \\n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \\n Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 for the URL. Only valid in Prometheus versions 2.27.0 and newer.\",\n \"properties\": {\n \"clientId\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"clientSecret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"endpointParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenUrl\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"clientId\",\n \"clientSecret\",\n \"tokenUrl\"\n ],\n \"type\": \"object\"\n },\n \"params\": {\n \"additionalProperties\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"description\": \"Optional HTTP URL parameters\",\n \"type\": \"object\"\n },\n \"path\": {\n \"description\": \"HTTP path to scrape for metrics. If empty, Prometheus uses the default value (e.g. `/metrics`).\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Name of the service port this endpoint refers to. Mutually exclusive with targetPort.\",\n \"type\": \"string\"\n },\n \"proxyUrl\": {\n \"description\": \"ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint.\",\n \"type\": \"string\"\n },\n \"relabelings\": {\n \"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\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\",\n \"properties\": {\n \"action\": {\n \"default\": \"replace\",\n \"description\": \"Action to perform based on the regex matching. \\n `Uppercase` and `Lowercase` actions require Prometheus \\u003e= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus \\u003e= v2.41.0. \\n Default: \\\"Replace\\\"\",\n \"enum\": [\n \"replace\",\n \"Replace\",\n \"keep\",\n \"Keep\",\n \"drop\",\n \"Drop\",\n \"hashmod\",\n \"HashMod\",\n \"labelmap\",\n \"LabelMap\",\n \"labeldrop\",\n \"LabelDrop\",\n \"labelkeep\",\n \"LabelKeep\",\n \"lowercase\",\n \"Lowercase\",\n \"uppercase\",\n \"Uppercase\",\n \"keepequal\",\n \"KeepEqual\",\n \"dropequal\",\n \"DropEqual\"\n ],\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values. \\n Only applicable when the action is `HashMod`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched.\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a Replace action is performed if the regular expression matches. \\n Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator is the string between concatenated SourceLabels.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.\",\n \"items\": {\n \"description\": \"LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\",\n \"pattern\": \"^[a-zA-Z_][a-zA-Z0-9_]*$\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting string is written in a replacement. \\n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \\n Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"scheme\": {\n \"description\": \"HTTP scheme to use for scraping. `http` and `https` are the expected values unless you rewrite the `__scheme__` label via relabeling. If empty, Prometheus uses the default value `http`.\",\n \"enum\": [\n \"http\",\n \"https\"\n ],\n \"type\": \"string\"\n },\n \"scrapeTimeout\": {\n \"description\": \"Timeout after which the scrape is ended If not specified, the Prometheus global scrape timeout is used unless it is less than `Interval` in which the latter is used.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"targetPort\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the target port of the Pod behind the Service, the port must be specified with container port property. Mutually exclusive with port.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration to use when scraping the endpoint\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the Prometheus container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"jobLabel\": {\n \"description\": \"JobLabel selects the label from the associated Kubernetes service which will be used as the `job` label for all metrics. \\n For example: If in `ServiceMonitor.spec.jobLabel: foo` and in `Service.metadata.labels.foo: bar`, then the `job=\\\"bar\\\"` label is added to all metrics. \\n If the value of this field is empty or if the label doesn't exist for the given Service, the `job` label of the metrics defaults to the name of the Kubernetes Service.\",\n \"type\": \"string\"\n },\n \"keepDroppedTargets\": {\n \"description\": \"Per-scrape limit on the number of targets dropped by relabeling that will be kept in memory. 0 means no limit. \\n It requires Prometheus \\u003e= v2.47.0.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"labelLimit\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"labelNameLengthLimit\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"labelValueLengthLimit\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"namespaceSelector\": {\n \"description\": \"Selector to select which namespaces the Kubernetes Endpoints objects are discovered from.\",\n \"properties\": {\n \"any\": {\n \"description\": \"Boolean describing whether all namespaces are selected in contrast to a list restricting them.\",\n \"type\": \"boolean\"\n },\n \"matchNames\": {\n \"description\": \"List of namespace names to select from.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podTargetLabels\": {\n \"description\": \"PodTargetLabels transfers labels on the Kubernetes `Pod` onto the created metrics.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"sampleLimit\": {\n \"description\": \"SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"selector\": {\n \"description\": \"Selector to select Endpoints objects.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetLabels\": {\n \"description\": \"TargetLabels transfers labels from the Kubernetes `Service` onto the created metrics.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLimit\": {\n \"description\": \"TargetLimit defines a limit on the number of scraped targets that will be accepted.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"selector\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"title\": \"Service Monitor\",\n \"type\": \"object\"\n}", + "version": "monitoring.coreos.com/v1" + }, + "configuration": null, + "description": "", + "displayName": "Service Monitor", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz" + }, + "model": { + "category": { + "name": "Uncategorized" + }, + "displayName": "Dnation Kubernetes Monitoring Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n" + }, + "model": { + "version": "3.6.2" + }, + "name": "dnation-kubernetes-monitoring-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Uncategorized", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"86\" height=\"62\" viewBox=\"0 0 86 62\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003ccircle cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"/\u003e\n\u003ccircle cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"/\u003e\n\u003ccircle cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"/\u003e\n\u003cpath d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"/\u003e\n\u003cpath d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"/\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"/\u003e\n\u003c/svg\u003e\r", + "svgWhite": "\u003csvg width=\"86\" height=\"62\" viewBox=\"0 0 86 62\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003ccircle cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003cpath d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M34 62V34H40V62H34Z\" fill=\"white\"/\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"/\u003e\n\u003c/svg\u003e\r" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/ThanosRuler.json b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/ThanosRuler.json new file mode 100644 index 00000000000..74c37439306 --- /dev/null +++ b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/components/ThanosRuler.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "ThanosRuler", + "schema": "{\n \"description\": \"ThanosRuler defines a ThanosRuler deployment.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"Specification of the desired behavior of the ThanosRuler cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\",\n \"properties\": {\n \"additionalArgs\": {\n \"description\": \"AdditionalArgs allows setting additional arguments for the ThanosRuler 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 ThanosRuler container which may cause issues if they are invalid or not supported by the given ThanosRuler 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.\",\n \"items\": {\n \"description\": \"Argument as part of the AdditionalArgs list.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the argument, e.g. \\\"scrape.discovery-reload-interval\\\".\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Argument value, e.g. 30s. Can be empty for name-only arguments (e.g. --storage.tsdb.no-lockfile)\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"affinity\": {\n \"description\": \"If specified, the pod's scheduling constraints.\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"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).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"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 \\u003ctopologyKey\\u003e matches that of any node on which a pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"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 \\u003ctopologyKey\\u003e matches that of any node on which a pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"alertDropLabels\": {\n \"description\": \"AlertDropLabels configure the label names which should be dropped in ThanosRuler alerts. The replica label `thanos_ruler_replica` will always be dropped in alerts.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"alertQueryUrl\": {\n \"description\": \"The external Query URL the Thanos Ruler will set in the 'Source' field of all alerts. Maps to the '--alert.query-url' CLI arg.\",\n \"type\": \"string\"\n },\n \"alertRelabelConfigFile\": {\n \"description\": \"AlertRelabelConfigFile specifies the path of the alert relabeling configuration file. When used alongside with AlertRelabelConfigs, alertRelabelConfigFile takes precedence.\",\n \"type\": \"string\"\n },\n \"alertRelabelConfigs\": {\n \"description\": \"AlertRelabelConfigs configures alert relabeling in ThanosRuler. Alert relabel configurations must have the form as specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs Alternative to AlertRelabelConfigFile, and lower order priority.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"alertmanagersConfig\": {\n \"description\": \"Define configuration for connecting to alertmanager. Only available with thanos v0.10.0 and higher. Maps to the `alertmanagers.config` arg.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"alertmanagersUrl\": {\n \"description\": \"Define URLs to send alerts to Alertmanager. For Thanos v0.10.0 and higher, AlertManagersConfig should be used instead. Note: this field will be ignored if AlertManagersConfig is specified. Maps to the `alertmanagers.url` arg.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"containers\": {\n \"description\": \"Containers allows injecting additional containers or modifying operator generated containers. This can be used to allow adding an authentication proxy to a ThanosRuler 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: `thanos-ruler` 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.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container. Cannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"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 \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"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.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"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.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"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\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events. Cannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"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.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"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.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"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.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host. If specified, this must be a valid port number, 0 \\u003c x \\u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod. This field may only be set for init containers, and the only allowed value is \\\"Always\\\". For non-init containers or when this field is not specified, the restart behavior is defined by the Pod's restart policy and the container type. Setting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect: this init container will be continually restarted on exit until all regular containers have terminated. Once all regular containers have completed, all init containers with restartPolicy \\\"Always\\\" will be shut down. This lifecycle differs from normal init containers and is often referred to as a \\\"sidecar\\\" container. Although this init container still starts in the init container sequence, it does not wait for the container to complete before proceeding to the next init container. Instead, the next init container starts immediately after this init container is started, or after any startupProbe has successfully completed.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"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/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"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.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"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.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are provided at both the pod \\u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"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 be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"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.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. 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.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Cannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enforcedNamespaceLabel\": {\n \"description\": \"EnforcedNamespaceLabel enforces adding a namespace label of origin for each alert and metric that is user created. The label value will always be the namespace of the object that is being created.\",\n \"type\": \"string\"\n },\n \"evaluationInterval\": {\n \"default\": \"15s\",\n \"description\": \"Interval between consecutive evaluations.\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"excludedFromEnforcement\": {\n \"description\": \"List of references to PrometheusRule objects to be excluded from enforcing a namespace label of origin. Applies only if enforcedNamespaceLabel set to true.\",\n \"items\": {\n \"description\": \"ObjectReference references a PodMonitor, ServiceMonitor, Probe or PrometheusRule object.\",\n \"properties\": {\n \"group\": {\n \"default\": \"monitoring.coreos.com\",\n \"description\": \"Group of the referent. When not specified, it defaults to `monitoring.coreos.com`\",\n \"enum\": [\n \"monitoring.coreos.com\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. When not set, all resources in the namespace are matched.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"resource\": {\n \"description\": \"Resource of the referent.\",\n \"enum\": [\n \"prometheusrules\",\n \"servicemonitors\",\n \"podmonitors\",\n \"probes\",\n \"scrapeconfigs\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"namespace\",\n \"resource\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"externalPrefix\": {\n \"description\": \"The external URL the Thanos Ruler instances will be available under. This is necessary to generate correct URLs. This is necessary if Thanos Ruler is not served from root of a DNS name.\",\n \"type\": \"string\"\n },\n \"grpcServerTlsConfig\": {\n \"description\": \"GRPCServerTLSConfig configures the gRPC server from which Thanos Querier reads recorded rule data. Note: Currently only the CAFile, CertFile, and KeyFile fields are supported. Maps to the '--grpc-server-tls-*' CLI args.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Certificate authority used when verifying server certificates.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the Prometheus container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Client certificate to present when doing client-authentication.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the Prometheus container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"hostAliases\": {\n \"description\": \"Pods' hostAliases configuration\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"hostnames\",\n \"ip\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"ip\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"image\": {\n \"description\": \"Thanos container image URL.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy for the 'thanos', 'init-config-reloader' and 'config-reloader' containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details.\",\n \"enum\": [\n \"\",\n \"Always\",\n \"Never\",\n \"IfNotPresent\"\n ],\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"An optional list of references to secrets in the same namespace to use for pulling thanos images from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"initContainers\": {\n \"description\": \"InitContainers allows adding initContainers to the pod definition. Those can be used to e.g. fetch secrets for injection into the ThanosRuler 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.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container. Cannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"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 \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"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.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"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.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"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\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events. Cannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"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.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"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.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"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.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host. If specified, this must be a valid port number, 0 \\u003c x \\u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod. This field may only be set for init containers, and the only allowed value is \\\"Always\\\". For non-init containers or when this field is not specified, the restart behavior is defined by the Pod's restart policy and the container type. Setting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect: this init container will be continually restarted on exit until all regular containers have terminated. Once all regular containers have completed, all init containers with restartPolicy \\\"Always\\\" will be shut down. This lifecycle differs from normal init containers and is often referred to as a \\\"sidecar\\\" container. Although this init container still starts in the init container sequence, it does not wait for the container to complete before proceeding to the next init container. Instead, the next init container starts immediately after this init container is started, or after any startupProbe has successfully completed.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"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/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"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.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"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.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are provided at both the pod \\u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"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 be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"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.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. 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.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"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\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Cannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels configure the external label pairs to ThanosRuler. A default replica label `thanos_ruler_replica` will be always added as a label with the value of the pod's name and it will be dropped in the alerts.\",\n \"type\": \"object\"\n },\n \"listenLocal\": {\n \"description\": \"ListenLocal makes the Thanos ruler listen on loopback, so that it does not bind against the Pod IP.\",\n \"type\": \"boolean\"\n },\n \"logFormat\": {\n \"description\": \"Log format for ThanosRuler to be configured with.\",\n \"enum\": [\n \"\",\n \"logfmt\",\n \"json\"\n ],\n \"type\": \"string\"\n },\n \"logLevel\": {\n \"description\": \"Log level for ThanosRuler to be configured with.\",\n \"enum\": [\n \"\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ],\n \"type\": \"string\"\n },\n \"minReadySeconds\": {\n \"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 from kubernetes 1.22 until 1.24 which requires enabling the StatefulSetMinReadySeconds feature gate.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Define which Nodes the Pods are scheduled on.\",\n \"type\": \"object\"\n },\n \"objectStorageConfig\": {\n \"description\": \"ObjectStorageConfig configures object storage in Thanos. Alternative to ObjectStorageConfigFile, and lower order priority.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"objectStorageConfigFile\": {\n \"description\": \"ObjectStorageConfigFile specifies the path of the object storage configuration file. When used alongside with ObjectStorageConfig, ObjectStorageConfigFile takes precedence.\",\n \"type\": \"string\"\n },\n \"paused\": {\n \"description\": \"When a ThanosRuler deployment is paused, no actions except for deletion will be performed on the underlying objects.\",\n \"type\": \"boolean\"\n },\n \"podMetadata\": {\n \"description\": \"PodMetadata configures labels and annotations which are propagated to the ThanosRuler pods. \\n The following items are reserved and cannot be overridden: * \\\"app.kubernetes.io/name\\\" label, set to \\\"thanos-ruler\\\". * \\\"app.kubernetes.io/managed-by\\\" label, set to \\\"prometheus-operator\\\". * \\\"app.kubernetes.io/instance\\\" label, set to the name of the ThanosRuler instance. * \\\"thanos-ruler\\\" label, set to the name of the ThanosRuler instance. * \\\"kubectl.kubernetes.io/default-container\\\" annotation, set to \\\"thanos-ruler\\\".\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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\",\n \"type\": \"object\"\n },\n \"name\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"portName\": {\n \"default\": \"web\",\n \"description\": \"Port name used for the pods and governing service. Defaults to `web`.\",\n \"type\": \"string\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class assigned to the Pods\",\n \"type\": \"string\"\n },\n \"prometheusRulesExcludedFromEnforce\": {\n \"description\": \"PrometheusRulesExcludedFromEnforce - list of Prometheus rules to be excluded from enforcing of adding namespace labels. Works only if enforcedNamespaceLabel set to true. Make sure both ruleNamespace and ruleName are set for each pair Deprecated: use excludedFromEnforcement instead.\",\n \"items\": {\n \"description\": \"PrometheusRuleExcludeConfig enables users to configure excluded PrometheusRule names and their namespaces to be ignored while enforcing namespace label for alerts and metrics.\",\n \"properties\": {\n \"ruleName\": {\n \"description\": \"Name of the excluded PrometheusRule object.\",\n \"type\": \"string\"\n },\n \"ruleNamespace\": {\n \"description\": \"Namespace of the excluded PrometheusRule object.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ruleName\",\n \"ruleNamespace\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"queryConfig\": {\n \"description\": \"Define configuration for connecting to thanos query instances. If this is defined, the QueryEndpoints field will be ignored. Maps to the `query.config` CLI argument. Only available with thanos v0.11.0 and higher.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"queryEndpoints\": {\n \"description\": \"QueryEndpoints defines Thanos querier endpoints from which to query metrics. Maps to the --query flag of thanos ruler.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"replicas\": {\n \"description\": \"Number of thanos ruler instances to deploy.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"resources\": {\n \"description\": \"Resources defines the resource requirements for single Pods. If not provided, no requests/limits will be set\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"retention\": {\n \"default\": \"24h\",\n \"description\": \"Time duration ThanosRuler shall retain data for. Default is '24h', and must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` (milliseconds seconds minutes hours days weeks years).\",\n \"pattern\": \"^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\",\n \"type\": \"string\"\n },\n \"routePrefix\": {\n \"description\": \"The route prefix ThanosRuler registers HTTP handlers for. This allows thanos UI to be served on a sub-path.\",\n \"type\": \"string\"\n },\n \"ruleNamespaceSelector\": {\n \"description\": \"Namespaces to be selected for Rules discovery. If unspecified, only the same namespace as the ThanosRuler object is in is used.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"ruleSelector\": {\n \"description\": \"A label selector to select which PrometheusRules to mount for alerting and recording.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings. This defaults to the default PodSecurityContext.\",\n \"properties\": {\n \"fsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"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.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"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.\",\n \"properties\": {\n \"localhostProfile\": {\n \"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 be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"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.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"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.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. 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.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run the Thanos Ruler Pods.\",\n \"type\": \"string\"\n },\n \"storage\": {\n \"description\": \"Storage spec to specify how storage shall be used.\",\n \"properties\": {\n \"disableMountSubPath\": {\n \"description\": \"*Deprecated: subPath usage will be removed in a future release.*\",\n \"type\": \"boolean\"\n },\n \"emptyDir\": {\n \"description\": \"EmptyDirVolumeSource to be used by the StatefulSet. If specified, it takes precedence over `ephemeral` and `volumeClaimTemplate`. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir\",\n \"properties\": {\n \"medium\": {\n \"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\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"EphemeralVolumeSource to be used by the StatefulSet. This is a beta field in k8s 1.21 and GA in 1.15. 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\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where `\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"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.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"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.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"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. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any 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, when namespace isn't specified in dataSourceRef, 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. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three 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. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"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\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"Defines the PVC spec to be used by the Prometheus StatefulSets. The easiest way to use a volume that cannot be automatically provisioned is to use a label selector alongside manually created PersistentVolumes.\",\n \"properties\": {\n \"apiVersion\": {\n \"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\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"EmbeddedMetadata contains metadata relevant to an EmbeddedResource.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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\",\n \"type\": \"object\"\n },\n \"name\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"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. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any 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, when namespace isn't specified in dataSourceRef, 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. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three 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. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"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\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"status\": {\n \"description\": \"*Deprecated: this field is never set.*\",\n \"properties\": {\n \"accessModes\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allocatedResourceStatuses\": {\n \"additionalProperties\": {\n \"description\": \"When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource that it does not recognizes, then it should ignore that update and let other controllers handle it.\",\n \"type\": \"string\"\n },\n \"description\": \"allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \\n ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeInProgress\\\" - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeFailed\\\" - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizePending\\\" - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeInProgress\\\" - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeFailed\\\" When this field is not set, it means that no resize operation is in progress for the given PVC. \\n A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \\n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"granular\"\n },\n \"allocatedResources\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \\n Capacity reported here 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. \\n A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \\n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\"\n },\n \"capacity\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"capacity represents the actual resources of the underlying volume.\",\n \"type\": \"object\"\n },\n \"conditions\": {\n \"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'.\",\n \"items\": {\n \"description\": \"PersistentVolumeClaimCondition contains details about state of pvc\",\n \"properties\": {\n \"lastProbeTime\": {\n \"description\": \"lastProbeTime is the time we probed the condition.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"lastTransitionTime\": {\n \"description\": \"lastTransitionTime is the time the condition transitioned from one status to another.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"message is the human-readable message indicating details about last transition.\",\n \"type\": \"string\"\n },\n \"reason\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"phase\": {\n \"description\": \"phase represents the current phase of PersistentVolumeClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches the triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"If specified, the pod's topology spread constraints.\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"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. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector. \\n This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"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).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"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 beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"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 beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"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 \\u003ckey, value\\u003e 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.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tracingConfig\": {\n \"description\": \"TracingConfig configures tracing in Thanos. This is an experimental feature, it may change in any upcoming release in a breaking way.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"tracingConfigFile\": {\n \"description\": \"TracingConfig specifies the path of the tracing configuration file. When used alongside with TracingConfig, TracingConfigFile takes precedence.\",\n \"type\": \"string\"\n },\n \"version\": {\n \"description\": \"Version of Thanos to be deployed.\",\n \"type\": \"string\"\n },\n \"volumeMounts\": {\n \"description\": \"VolumeMounts allows configuration of additional VolumeMounts on the output StatefulSet definition. VolumeMounts specified will be appended to other VolumeMounts in the ruler container, that are generated as a result of StorageSpec objects.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"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.\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"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).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"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\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"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\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"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\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"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.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"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\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. \\n Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). \\n Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. \\n Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. \\n A pod can use both types of ephemeral volumes and persistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where `\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"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.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"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.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"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. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any 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, when namespace isn't specified in dataSourceRef, 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. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three 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. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"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\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"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.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker should be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"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.\",\n \"properties\": {\n \"directory\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"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\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"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.\",\n \"properties\": {\n \"path\": {\n \"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\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume Defaults to \\\"\\\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"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\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"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).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"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).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"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\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"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\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts. Default false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the token into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to Default is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"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\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to Defaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"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\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"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\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"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\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"title\": \"Thanos Ruler\",\n \"type\": \"object\"\n}", + "version": "monitoring.coreos.com/v1" + }, + "configuration": null, + "description": "", + "displayName": "Thanos Ruler", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz" + }, + "model": { + "category": { + "name": "Uncategorized" + }, + "displayName": "Dnation Kubernetes Monitoring Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://dnationcloud.github.io/helm-hub/dnation-kubernetes-monitoring-stack-3.6.2.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n" + }, + "model": { + "version": "3.6.2" + }, + "name": "dnation-kubernetes-monitoring-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Uncategorized", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"86\" height=\"62\" viewBox=\"0 0 86 62\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003ccircle cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"/\u003e\n\u003ccircle cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"/\u003e\n\u003ccircle cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"/\u003e\n\u003cpath d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"/\u003e\n\u003cpath d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"/\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"/\u003e\n\u003c/svg\u003e\r", + "svgWhite": "\u003csvg width=\"86\" height=\"62\" viewBox=\"0 0 86 62\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003ccircle cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003ccircle cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"/\u003e\n\u003cpath d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M34 62V34H40V62H34Z\" fill=\"white\"/\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"/\u003e\n\u003c/svg\u003e\r" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/model.json b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/model.json new file mode 100644 index 00000000000..f4376391205 --- /dev/null +++ b/server/meshmodel/dnation-kubernetes-monitoring-stack/3.6.2/v1.0.0/model.json @@ -0,0 +1,42 @@ +{ + "category": { + "name": "Uncategorized" + }, + "displayName": "Dnation Kubernetes Monitoring Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "capabilities": null, + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"#248431\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"#F4790D\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"#E61F2E\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"#D6D7D8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0742 62 39 57.0752 39 51C39 44.9248 34.0742 40 28 40C21.9258 40 17 44.9248 17 51C17 57.0752 21.9258 62 28 62ZM29 57C32.3125 57 35 54.3137 35 51C35 47.6863 32.3125 45 29 45C25.6875 45 23 47.6863 23 51C23 54.3137 25.6875 57 29 57Z\" fill=\"#D9D9D9\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 86 62\" fill=\"none\"\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"13\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"43\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003ccircle xmlns=\"http://www.w3.org/2000/svg\" cx=\"73\" cy=\"13\" r=\"13\" fill=\"white\"\u003e\u003c/circle\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M43 62V34H48L62.5 51.5V34H69.5V62H64L49.5 45V62H43Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34 62V34H40V62H34Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28 62C34.0751 62 39 57.0751 39 51C39 44.9249 34.0751 40 28 40C21.9249 40 17 44.9249 17 51C17 57.0751 21.9249 62 28 62ZM29 57C32.3137 57 35 54.3137 35 51C35 47.6863 32.3137 45 29 45C25.6863 45 23 47.6863 23 51C23 54.3137 25.6863 57 29 57Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n" + }, + "model": { + "version": "3.6.2" + }, + "name": "dnation-kubernetes-monitoring-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Uncategorized", + "version": "v1.0.0", + "components": null, + "relationships": null + } \ No newline at end of file diff --git a/server/meshmodel/eclipse-che/7.91.0/v1.0.0/components/CheCluster.json b/server/meshmodel/eclipse-che/7.91.0/v1.0.0/components/CheCluster.json new file mode 100644 index 00000000000..b94cf371b81 --- /dev/null +++ b/server/meshmodel/eclipse-che/7.91.0/v1.0.0/components/CheCluster.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "CheCluster", + "schema": "{\n \"description\": \"The `CheCluster` custom resource allows defining and managing a Che server installation\",\n \"properties\": {\n \"spec\": {\n \"description\": \"Desired configuration of the Che installation.\\nBased on these settings, the Operator automatically creates and maintains\\nseveral ConfigMaps that will contain the appropriate environment variables\\nthe various components of the Che installation.\\nThese generated ConfigMaps must NOT be updated manually.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"Configuration settings related to the Authentication used by the Che installation.\",\n \"properties\": {\n \"debug\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nDebug internal identity provider.\",\n \"type\": \"boolean\"\n },\n \"externalIdentityProvider\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nInstructs the Operator on whether or not to deploy a dedicated Identity Provider (Keycloak or RH SSO instance).\\nInstructs the Operator on whether to deploy a dedicated Identity Provider (Keycloak or RH-SSO instance).\\nBy default, a dedicated Identity Provider server is deployed as part of the Che installation. When `externalIdentityProvider` is `true`,\\nno dedicated identity provider will be deployed by the Operator and you will need to provide details about the external identity provider you are about to use.\\nSee also all the other fields starting with: `identityProvider`.\",\n \"type\": \"boolean\"\n },\n \"gatewayAuthenticationSidecarImage\": {\n \"description\": \"Gateway sidecar responsible for authentication when NativeUserMode is enabled.\\nSee link:https://github.com/oauth2-proxy/oauth2-proxy[oauth2-proxy] or link:https://github.com/openshift/oauth-proxy[openshift/oauth-proxy].\",\n \"type\": \"string\"\n },\n \"gatewayAuthorizationSidecarImage\": {\n \"description\": \"Gateway sidecar responsible for authorization when NativeUserMode is enabled.\\nSee link:https://github.com/brancz/kube-rbac-proxy[kube-rbac-proxy] or link:https://github.com/openshift/kube-rbac-proxy[openshift/kube-rbac-proxy]\",\n \"type\": \"string\"\n },\n \"gatewayConfigBumpEnv\": {\n \"description\": \"List of environment variables to set in the Configbump container.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"gatewayEnv\": {\n \"description\": \"List of environment variables to set in the Gateway container.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"gatewayHeaderRewriteSidecarImage\": {\n \"description\": \"Deprecated. The value of this flag is ignored. Sidecar functionality is now implemented in Traefik plugin.\",\n \"type\": \"string\"\n },\n \"gatewayKubeRbacProxyEnv\": {\n \"description\": \"List of environment variables to set in the Kube rbac proxy container.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"gatewayOAuthProxyEnv\": {\n \"description\": \"List of environment variables to set in the OAuth proxy container.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"identityProviderAdminUserName\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nOverrides the name of the Identity Provider administrator user. Defaults to `admin`.\",\n \"type\": \"string\"\n },\n \"identityProviderClientId\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nName of a Identity provider, Keycloak or RH-SSO, `client-id` that is used for Che.\\nOverride this when an external Identity Provider is in use. See the `externalIdentityProvider` field.\\nWhen omitted or left blank, it is set to the value of the `flavour` field suffixed with `-public`.\",\n \"type\": \"string\"\n },\n \"identityProviderContainerResources\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nIdentity provider container custom settings.\",\n \"properties\": {\n \"limits\": {\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\",\n \"properties\": {\n \"cpu\": {\n \"description\": \"CPU, in cores. (500m = .5 cores)\",\n \"type\": \"string\"\n },\n \"memory\": {\n \"description\": \"Memory, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"request\": {\n \"description\": \"Requests describes the minimum amount of compute resources required.\",\n \"properties\": {\n \"cpu\": {\n \"description\": \"CPU, in cores. (500m = .5 cores)\",\n \"type\": \"string\"\n },\n \"memory\": {\n \"description\": \"Memory, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"identityProviderImage\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nOverrides the container image used in the Identity Provider, Keycloak or RH-SSO, deployment.\\nThis includes the image tag. Omit it or leave it empty to use the default container image provided by the Operator.\",\n \"type\": \"string\"\n },\n \"identityProviderImagePullPolicy\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nOverrides the image pull policy used in the Identity Provider, Keycloak or RH-SSO, deployment.\\nDefault value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.\",\n \"type\": \"string\"\n },\n \"identityProviderIngress\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nIngress custom settings.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata.\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"description\": \"Comma separated list of labels that can be used to organize and categorize objects by scoping and selecting.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"identityProviderPassword\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nOverrides the password of Keycloak administrator user.\\nOverride this when an external Identity Provider is in use. See the `externalIdentityProvider` field.\\nWhen omitted or left blank, it is set to an auto-generated password.\",\n \"type\": \"string\"\n },\n \"identityProviderPostgresPassword\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nPassword for a Identity Provider, Keycloak or RH-SSO, to connect to the database.\\nOverride this when an external Identity Provider is in use. See the `externalIdentityProvider` field.\\nWhen omitted or left blank, it is set to an auto-generated password.\",\n \"type\": \"string\"\n },\n \"identityProviderPostgresSecret\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nThe secret that contains `password` for the Identity Provider, Keycloak or RH-SSO, to connect to the database.\\nWhen the secret is defined, the `identityProviderPostgresPassword` is ignored. When the value is omitted or left blank, the one of following scenarios applies:\\n1. `identityProviderPostgresPassword` is defined, then it will be used to connect to the database.\\n2. `identityProviderPostgresPassword` is not defined, then a new secret with the name `che-identity-postgres-secret` will be created with an auto-generated value for `password`.\\nThe secret must have `app.kubernetes.io/part-of=che.eclipse.org` label.\",\n \"type\": \"string\"\n },\n \"identityProviderRealm\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nName of a Identity provider, Keycloak or RH-SSO, realm that is used for Che.\\nOverride this when an external Identity Provider is in use. See the `externalIdentityProvider` field.\\nWhen omitted or left blank, it is set to the value of the `flavour` field.\",\n \"type\": \"string\"\n },\n \"identityProviderRoute\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nRoute custom settings.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata.\",\n \"type\": \"object\"\n },\n \"domain\": {\n \"description\": \"Operator uses the domain to generate a hostname for a route.\\nIn a conjunction with labels it creates a route, which is served by a non-default Ingress controller.\\nThe generated host name will follow this pattern: `\\u003croute-name\\u003e-\\u003croute-namespace\\u003e.\\u003cdomain\\u003e`.\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"description\": \"Comma separated list of labels that can be used to organize and categorize objects by scoping and selecting.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"identityProviderSecret\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nThe secret that contains `user` and `password` for Identity Provider.\\nWhen the secret is defined, the `identityProviderAdminUserName` and `identityProviderPassword` are ignored.\\nWhen the value is omitted or left blank, the one of following scenarios applies:\\n1. `identityProviderAdminUserName` and `identityProviderPassword` are defined, then they will be used.\\n2. `identityProviderAdminUserName` or `identityProviderPassword` are not defined, then a new secret with the name\\n`che-identity-secret` will be created with default value `admin` for `user` and with an auto-generated value for `password`.\\nThe secret must have `app.kubernetes.io/part-of=che.eclipse.org` label.\",\n \"type\": \"string\"\n },\n \"identityProviderURL\": {\n \"description\": \"Public URL of the Identity Provider server (Keycloak / RH-SSO server).\\nSet this ONLY when a use of an external Identity Provider is needed.\\nSee the `externalIdentityProvider` field. By default, this will be automatically calculated and set by the Operator.\",\n \"type\": \"string\"\n },\n \"identityToken\": {\n \"description\": \"Identity token to be passed to upstream. There are two types of tokens supported: `id_token` and `access_token`.\\nDefault value is `id_token`.\\nThis field is specific to Che installations made for Kubernetes only and ignored for OpenShift.\",\n \"type\": \"string\"\n },\n \"initialOpenShiftOAuthUser\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nFor operating with the OpenShift OAuth authentication, create a new user account since the kubeadmin can not be used.\\nIf the value is true, then a new OpenShift OAuth user will be created for the HTPasswd identity provider.\\nIf the value is false and the user has already been created, then it will be removed.\\nIf value is an empty, then do nothing.\\nThe user's credentials are stored in the `openshift-oauth-user-credentials` secret in 'openshift-config' namespace by Operator.\\nNote that this solution is Openshift 4 platform-specific.\",\n \"type\": \"boolean\"\n },\n \"nativeUserMode\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nEnables native user mode. Currently works only on OpenShift and DevWorkspace engine.\\nNative User mode uses OpenShift OAuth directly as identity provider, without Keycloak.\",\n \"type\": \"boolean\"\n },\n \"oAuthClientName\": {\n \"description\": \"Name of the OpenShift `OAuthClient` resource used to setup identity federation on the OpenShift side. Auto-generated when left blank. See also the `OpenShiftoAuth` field.\",\n \"type\": \"string\"\n },\n \"oAuthScope\": {\n \"description\": \"Access Token Scope.\\nThis field is specific to Che installations made for Kubernetes only and ignored for OpenShift.\",\n \"type\": \"string\"\n },\n \"oAuthSecret\": {\n \"description\": \"Name of the secret set in the OpenShift `OAuthClient` resource used to setup identity federation on the OpenShift side. Auto-generated when left blank. See also the `OAuthClientName` field.\",\n \"type\": \"string\"\n },\n \"openShiftoAuth\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nEnables the integration of the identity provider (Keycloak / RHSSO) with OpenShift OAuth.\\nEmpty value on OpenShift by default. This will allow users to directly login with their OpenShift user through the OpenShift login,\\nand have their workspaces created under personal OpenShift namespaces.\\nWARNING: the `kubeadmin` user is NOT supported, and logging through it will NOT allow accessing the Che Dashboard.\",\n \"type\": \"boolean\"\n },\n \"updateAdminPassword\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nForces the default `admin` Che user to update password on first login. Defaults to `false`.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"dashboard\": {\n \"description\": \"Configuration settings related to the User Dashboard used by the Che installation.\",\n \"properties\": {\n \"warning\": {\n \"description\": \"Warning message that will be displayed on the User Dashboard\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"database\": {\n \"description\": \"Configuration settings related to the database used by the Che installation.\",\n \"properties\": {\n \"chePostgresContainerResources\": {\n \"description\": \"PostgreSQL container custom settings\",\n \"properties\": {\n \"limits\": {\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\",\n \"properties\": {\n \"cpu\": {\n \"description\": \"CPU, in cores. (500m = .5 cores)\",\n \"type\": \"string\"\n },\n \"memory\": {\n \"description\": \"Memory, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"request\": {\n \"description\": \"Requests describes the minimum amount of compute resources required.\",\n \"properties\": {\n \"cpu\": {\n \"description\": \"CPU, in cores. (500m = .5 cores)\",\n \"type\": \"string\"\n },\n \"memory\": {\n \"description\": \"Memory, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"chePostgresDb\": {\n \"description\": \"PostgreSQL database name that the Che server uses to connect to the DB. Defaults to `dbche`.\",\n \"type\": \"string\"\n },\n \"chePostgresHostName\": {\n \"description\": \"PostgreSQL Database host name that the Che server uses to connect to.\\nDefaults is `postgres`. Override this value ONLY when using an external database. See field `externalDb`.\\nIn the default case it will be automatically set by the Operator.\",\n \"type\": \"string\"\n },\n \"chePostgresPassword\": {\n \"description\": \"PostgreSQL password that the Che server uses to connect to the DB. When omitted or left blank, it will be set to an automatically generated value.\",\n \"type\": \"string\"\n },\n \"chePostgresPort\": {\n \"description\": \"PostgreSQL Database port that the Che server uses to connect to. Defaults to 5432.\\nOverride this value ONLY when using an external database. See field `externalDb`. In the default case it will be automatically set by the Operator.\",\n \"type\": \"string\"\n },\n \"chePostgresSecret\": {\n \"description\": \"The secret that contains PostgreSQL`user` and `password` that the Che server uses to connect to the DB.\\nWhen the secret is defined, the `chePostgresUser` and `chePostgresPassword` are ignored.\\nWhen the value is omitted or left blank, the one of following scenarios applies:\\n1. `chePostgresUser` and `chePostgresPassword` are defined, then they will be used to connect to the DB.\\n2. `chePostgresUser` or `chePostgresPassword` are not defined, then a new secret with the name `postgres-credentials`\\nwill be created with default value of `pgche` for `user` and with an auto-generated value for `password`.\\nThe secret must have `app.kubernetes.io/part-of=che.eclipse.org` label.\",\n \"type\": \"string\"\n },\n \"chePostgresUser\": {\n \"description\": \"PostgreSQL user that the Che server uses to connect to the DB. Defaults to `pgche`.\",\n \"type\": \"string\"\n },\n \"externalDb\": {\n \"description\": \"Instructs the Operator on whether to deploy a dedicated database.\\nBy default, a dedicated PostgreSQL database is deployed as part of the Che installation. When `externalDb` is `true`, no dedicated database will be deployed by the\\nOperator and you will need to provide connection details to the external DB you are about to use. See also all the fields starting with: `chePostgres`.\",\n \"type\": \"boolean\"\n },\n \"postgresEnv\": {\n \"description\": \"List of environment variables to set in the PostgreSQL container.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"postgresImage\": {\n \"description\": \"Overrides the container image used in the PostgreSQL database deployment. This includes the image tag. Omit it or leave it empty to use the default container image provided by the Operator.\",\n \"type\": \"string\"\n },\n \"postgresImagePullPolicy\": {\n \"description\": \"Overrides the image pull policy used in the PostgreSQL database deployment. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.\",\n \"type\": \"string\"\n },\n \"postgresVersion\": {\n \"description\": \"Indicates a PostgreSQL version image to use. Allowed values are: `9.6` and `13.3`.\\nMigrate your PostgreSQL database to switch from one version to another.\",\n \"type\": \"string\"\n },\n \"pvcClaimSize\": {\n \"description\": \"Size of the persistent volume claim for database. Defaults to `1Gi`.\\nTo update pvc storageclass that provisions it must support resize when Eclipse Che has been already deployed.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"devWorkspace\": {\n \"description\": \"DevWorkspace operator configuration\",\n \"properties\": {\n \"controllerImage\": {\n \"description\": \"Overrides the container image used in the DevWorkspace controller deployment.\\nThis includes the image tag. Omit it or leave it empty to use the default container image provided by the Operator.\",\n \"type\": \"string\"\n },\n \"enable\": {\n \"description\": \"Deploys the DevWorkspace Operator in the cluster.\\nDoes nothing when a matching version of the Operator is already installed.\\nFails when a non-matching version of the Operator is already installed.\",\n \"type\": \"boolean\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the DevWorkspace container.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"runningLimit\": {\n \"description\": \"Maximum number of the running workspaces per user.\",\n \"type\": \"string\"\n },\n \"secondsOfInactivityBeforeIdling\": {\n \"default\": 1800,\n \"description\": \"Idle timeout for workspaces in seconds.\\nThis timeout is the duration after which a workspace will be idled if there is no activity.\\nTo disable workspace idling due to inactivity, set this value to -1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"secondsOfRunBeforeIdling\": {\n \"default\": -1,\n \"description\": \"Run timeout for workspaces in seconds.\\nThis timeout is the maximum duration a workspace runs.\\nTo disable workspace run timeout, set this value to -1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"enable\"\n ],\n \"type\": \"object\"\n },\n \"gitServices\": {\n \"description\": \"A configuration that allows users to work with remote Git repositories.\",\n \"properties\": {\n \"bitbucket\": {\n \"description\": \"Enables users to work with repositories hosted on Bitbucket (bitbucket.org or self-hosted).\",\n \"items\": {\n \"description\": \"BitBucketService enables users to work with repositories hosted on Bitbucket (bitbucket.org or self-hosted).\",\n \"properties\": {\n \"endpoint\": {\n \"description\": \"Bitbucket server endpoint URL.\\nDeprecated in favor of `che.eclipse.org/scm-server-endpoint` annotation.\\nSee the following page: https://www.eclipse.org/che/docs/stable/administration-guide/configuring-oauth-1-for-a-bitbucket-server/.\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"Kubernetes secret, that contains Base64-encoded Bitbucket OAuth 1.0 or OAuth 2.0 data.\\nSee the following pages for details: https://www.eclipse.org/che/docs/stable/administration-guide/configuring-oauth-1-for-a-bitbucket-server/\\nand https://www.eclipse.org/che/docs/stable/administration-guide/configuring-oauth-2-for-the-bitbucket-cloud/.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"github\": {\n \"description\": \"Enables users to work with repositories hosted on GitHub (github.com or GitHub Enterprise).\",\n \"items\": {\n \"description\": \"GitHubService enables users to work with repositories hosted on GitHub (GitHub.com or GitHub Enterprise).\",\n \"properties\": {\n \"endpoint\": {\n \"description\": \"GitHub server endpoint URL.\\nDeprecated in favor of `che.eclipse.org/scm-server-endpoint` annotation.\\nSee the following page for details: https://www.eclipse.org/che/docs/stable/administration-guide/configuring-oauth-2-for-github/.\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"Kubernetes secret, that contains Base64-encoded GitHub OAuth Client id and GitHub OAuth Client secret.\\nSee the following page for details: https://www.eclipse.org/che/docs/stable/administration-guide/configuring-oauth-2-for-github/.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"gitlab\": {\n \"description\": \"Enables users to work with repositories hosted on GitLab (gitlab.com or self-hosted).\",\n \"items\": {\n \"description\": \"GitLabService enables users to work with repositories hosted on GitLab (gitlab.com or self-hosted).\",\n \"properties\": {\n \"endpoint\": {\n \"description\": \"GitLab server endpoint URL.\\nDeprecated in favor of `che.eclipse.org/scm-server-endpoint` annotation.\\nSee the following page: https://www.eclipse.org/che/docs/stable/administration-guide/configuring-oauth-2-for-gitlab/.\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"Kubernetes secret, that contains Base64-encoded GitHub Application id and GitLab Application Client secret.\\nSee the following page: https://www.eclipse.org/che/docs/stable/administration-guide/configuring-oauth-2-for-gitlab/.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"imagePuller\": {\n \"description\": \"Kubernetes Image Puller configuration\",\n \"properties\": {\n \"enable\": {\n \"description\": \"Install and configure the Community Supported Kubernetes Image Puller Operator. When set to `true` and no spec is provided,\\nit will create a default KubernetesImagePuller object to be managed by the Operator.\\nWhen set to `false`, the KubernetesImagePuller object will be deleted, and the Operator will be uninstalled,\\nregardless of whether a spec is provided.\\nIf the `spec.images` field is empty, a set of recommended workspace-related images will be automatically detected and\\npre-pulled after installation.\\nNote that while this Operator and its behavior is community-supported, its payload may be commercially-supported\\nfor pulling commercially-supported images.\",\n \"type\": \"boolean\"\n },\n \"spec\": {\n \"description\": \"A KubernetesImagePullerSpec to configure the image puller in the CheCluster\",\n \"properties\": {\n \"affinity\": {\n \"type\": \"string\"\n },\n \"cachingCPULimit\": {\n \"type\": \"string\"\n },\n \"cachingCPURequest\": {\n \"type\": \"string\"\n },\n \"cachingIntervalHours\": {\n \"type\": \"string\"\n },\n \"cachingMemoryLimit\": {\n \"type\": \"string\"\n },\n \"cachingMemoryRequest\": {\n \"type\": \"string\"\n },\n \"configMapName\": {\n \"type\": \"string\"\n },\n \"daemonsetName\": {\n \"type\": \"string\"\n },\n \"deploymentName\": {\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"type\": \"string\"\n },\n \"imagePullerImage\": {\n \"type\": \"string\"\n },\n \"images\": {\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"enable\"\n ],\n \"type\": \"object\"\n },\n \"k8s\": {\n \"description\": \"Configuration settings specific to Che installations made on upstream Kubernetes.\",\n \"properties\": {\n \"ingressClass\": {\n \"description\": \"Ingress class that will define the which controller will manage ingresses. Defaults to `nginx`.\\nNB: This drives the `kubernetes.io/ingress.class` annotation on Che-related ingresses.\",\n \"type\": \"string\"\n },\n \"ingressDomain\": {\n \"description\": \"Global ingress domain for a Kubernetes cluster. This MUST be explicitly specified: there are no defaults.\",\n \"type\": \"string\"\n },\n \"ingressStrategy\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nStrategy for ingress creation. Options are: `multi-host` (host is explicitly provided in ingress),\\n`single-host` (host is provided, path-based rules) and `default-host` (no host is provided, path-based rules).\\nDefaults to `multi-host` Deprecated in favor of `serverExposureStrategy` in the `server` section,\\nwhich defines this regardless of the cluster type. When both are defined, the `serverExposureStrategy` option takes precedence.\",\n \"type\": \"string\"\n },\n \"securityContextFsGroup\": {\n \"description\": \"The FSGroup in which the Che Pod and workspace Pods containers runs in. Default value is `1724`.\",\n \"type\": \"string\"\n },\n \"securityContextRunAsUser\": {\n \"description\": \"ID of the user the Che Pod and workspace Pods containers run as. Default value is `1724`.\",\n \"type\": \"string\"\n },\n \"singleHostExposureType\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nWhen the serverExposureStrategy is set to `single-host`, the way the server, registries and workspaces are exposed is further configured by this property.\\nThe possible values are `native`, which means that the server and workspaces are exposed using ingresses on K8s\\nor `gateway` where the server and workspaces are exposed using a custom gateway based on link:https://doc.traefik.io/traefik/[Traefik].\\nAll the endpoints whether backed by the ingress or gateway `route` always point to the subpaths on the same domain. Defaults to `native`.\",\n \"type\": \"string\"\n },\n \"tlsSecretName\": {\n \"description\": \"Name of a secret that will be used to setup ingress TLS termination when TLS is enabled.\\nWhen the field is empty string, the default cluster certificate will be used. See also the `tlsSupport` field.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"metrics\": {\n \"description\": \"Configuration settings related to the metrics collection used by the Che installation.\",\n \"properties\": {\n \"enable\": {\n \"description\": \"Enables `metrics` the Che server endpoint. Default to `true`.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"server\": {\n \"description\": \"General configuration settings related to the Che server, the plugin and devfile registries\",\n \"properties\": {\n \"airGapContainerRegistryHostname\": {\n \"description\": \"Optional host name, or URL, to an alternate container registry to pull images from.\\nThis value overrides the container registry host name defined in all the default container images involved in a Che deployment.\\nThis is particularly useful to install Che in a restricted environment.\",\n \"type\": \"string\"\n },\n \"airGapContainerRegistryOrganization\": {\n \"description\": \"Optional repository name of an alternate container registry to pull images from.\\nThis value overrides the container registry organization defined in all the default container images involved in a Che deployment.\\nThis is particularly useful to install Eclipse Che in a restricted environment.\",\n \"type\": \"string\"\n },\n \"allowAutoProvisionUserNamespace\": {\n \"description\": \"Indicates if is allowed to automatically create a user namespace.\\nIf it set to false, then user namespace must be pre-created by a cluster administrator.\",\n \"type\": \"boolean\"\n },\n \"allowUserDefinedWorkspaceNamespaces\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nDefines that a user is allowed to specify a Kubernetes namespace, or an OpenShift project, which differs from the default.\\nIt's NOT RECOMMENDED to set to `true` without OpenShift OAuth configured. The OpenShift infrastructure also uses this property.\",\n \"type\": \"boolean\"\n },\n \"cheClusterRoles\": {\n \"description\": \"A comma-separated list of ClusterRoles that will be assigned to Che ServiceAccount.\\nEach role must have `app.kubernetes.io/part-of=che.eclipse.org` label.\\nBe aware that the Che Operator has to already have all permissions in these ClusterRoles to grant them.\",\n \"type\": \"string\"\n },\n \"cheDebug\": {\n \"description\": \"Enables the debug mode for Che server. Defaults to `false`.\",\n \"type\": \"string\"\n },\n \"cheFlavor\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nSpecifies a variation of the installation. The options are `che` for upstream Che installations or\\n`devspaces` for Red Hat OpenShift Dev Spaces (formerly Red Hat CodeReady Workspaces) installation\",\n \"type\": \"string\"\n },\n \"cheHost\": {\n \"description\": \"Public host name of the installed Che server. When value is omitted, the value it will be automatically set by the Operator.\\nSee the `cheHostTLSSecret` field.\",\n \"type\": \"string\"\n },\n \"cheHostTLSSecret\": {\n \"description\": \"Name of a secret containing certificates to secure ingress or route for the custom host name of the installed Che server.\\nThe secret must have `app.kubernetes.io/part-of=che.eclipse.org` label.\\nSee the `cheHost` field.\",\n \"type\": \"string\"\n },\n \"cheImage\": {\n \"description\": \"Overrides the container image used in Che deployment. This does NOT include the container image tag.\\nOmit it or leave it empty to use the default container image provided by the Operator.\",\n \"type\": \"string\"\n },\n \"cheImagePullPolicy\": {\n \"description\": \"Overrides the image pull policy used in Che deployment.\\nDefault value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.\",\n \"type\": \"string\"\n },\n \"cheImageTag\": {\n \"description\": \"Overrides the tag of the container image used in Che deployment.\\nOmit it or leave it empty to use the default image tag provided by the Operator.\",\n \"type\": \"string\"\n },\n \"cheLogLevel\": {\n \"description\": \"Log level for the Che server: `INFO` or `DEBUG`. Defaults to `INFO`.\",\n \"type\": \"string\"\n },\n \"cheServerEnv\": {\n \"description\": \"List of environment variables to set in the Che server container.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"cheServerIngress\": {\n \"description\": \"The Che server ingress custom settings.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata.\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"description\": \"Comma separated list of labels that can be used to organize and categorize objects by scoping and selecting.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"cheServerRoute\": {\n \"description\": \"The Che server route custom settings.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata.\",\n \"type\": \"object\"\n },\n \"domain\": {\n \"description\": \"Operator uses the domain to generate a hostname for a route.\\nIn a conjunction with labels it creates a route, which is served by a non-default Ingress controller.\\nThe generated host name will follow this pattern: `\\u003croute-name\\u003e-\\u003croute-namespace\\u003e.\\u003cdomain\\u003e`.\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"description\": \"Comma separated list of labels that can be used to organize and categorize objects by scoping and selecting.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"cheWorkspaceClusterRole\": {\n \"description\": \"Custom cluster role bound to the user for the Che workspaces.\\nThe role must have `app.kubernetes.io/part-of=che.eclipse.org` label.\\nThe default roles are used when omitted or left blank.\",\n \"type\": \"string\"\n },\n \"customCheProperties\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of additional environment variables that will be applied in the generated `che` ConfigMap to be used by the Che server,\\nin addition to the values already generated from other fields of the `CheCluster` custom resource (CR).\\nWhen `customCheProperties` contains a property that would be normally generated in `che` ConfigMap from other CR fields,\\nthe value defined in the `customCheProperties` is used instead.\",\n \"type\": \"object\"\n },\n \"dashboardCpuLimit\": {\n \"description\": \"Overrides the CPU limit used in the dashboard deployment.\\nIn cores. (500m = .5 cores). Default to 500m.\",\n \"type\": \"string\"\n },\n \"dashboardCpuRequest\": {\n \"description\": \"Overrides the CPU request used in the dashboard deployment.\\nIn cores. (500m = .5 cores). Default to 100m.\",\n \"type\": \"string\"\n },\n \"dashboardEnv\": {\n \"description\": \"List of environment variables to set in the dashboard container.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"dashboardImage\": {\n \"description\": \"Overrides the container image used in the dashboard deployment.\\nThis includes the image tag. Omit it or leave it empty to use the default container image provided by the Operator.\",\n \"type\": \"string\"\n },\n \"dashboardImagePullPolicy\": {\n \"description\": \"Overrides the image pull policy used in the dashboard deployment.\\nDefault value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.\",\n \"type\": \"string\"\n },\n \"dashboardIngress\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nDashboard ingress custom settings.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata.\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"description\": \"Comma separated list of labels that can be used to organize and categorize objects by scoping and selecting.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dashboardMemoryLimit\": {\n \"description\": \"Overrides the memory limit used in the dashboard deployment. Defaults to 256Mi.\",\n \"type\": \"string\"\n },\n \"dashboardMemoryRequest\": {\n \"description\": \"Overrides the memory request used in the dashboard deployment. Defaults to 16Mi.\",\n \"type\": \"string\"\n },\n \"dashboardRoute\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nDashboard route custom settings.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata.\",\n \"type\": \"object\"\n },\n \"domain\": {\n \"description\": \"Operator uses the domain to generate a hostname for a route.\\nIn a conjunction with labels it creates a route, which is served by a non-default Ingress controller.\\nThe generated host name will follow this pattern: `\\u003croute-name\\u003e-\\u003croute-namespace\\u003e.\\u003cdomain\\u003e`.\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"description\": \"Comma separated list of labels that can be used to organize and categorize objects by scoping and selecting.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"devfileRegistryCpuLimit\": {\n \"description\": \"Overrides the CPU limit used in the devfile registry deployment.\\nIn cores. (500m = .5 cores). Default to 500m.\",\n \"type\": \"string\"\n },\n \"devfileRegistryCpuRequest\": {\n \"description\": \"Overrides the CPU request used in the devfile registry deployment.\\nIn cores. (500m = .5 cores). Default to 100m.\",\n \"type\": \"string\"\n },\n \"devfileRegistryEnv\": {\n \"description\": \"List of environment variables to set in the plugin registry container.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"devfileRegistryImage\": {\n \"description\": \"Overrides the container image used in the devfile registry deployment.\\nThis includes the image tag. Omit it or leave it empty to use the default container image provided by the Operator.\",\n \"type\": \"string\"\n },\n \"devfileRegistryIngress\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nThe devfile registry ingress custom settings.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata.\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"description\": \"Comma separated list of labels that can be used to organize and categorize objects by scoping and selecting.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"devfileRegistryMemoryLimit\": {\n \"description\": \"Overrides the memory limit used in the devfile registry deployment. Defaults to 256Mi.\",\n \"type\": \"string\"\n },\n \"devfileRegistryMemoryRequest\": {\n \"description\": \"Overrides the memory request used in the devfile registry deployment. Defaults to 16Mi.\",\n \"type\": \"string\"\n },\n \"devfileRegistryPullPolicy\": {\n \"description\": \"Overrides the image pull policy used in the devfile registry deployment.\\nDefault value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.\",\n \"type\": \"string\"\n },\n \"devfileRegistryRoute\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nThe devfile registry route custom settings.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata.\",\n \"type\": \"object\"\n },\n \"domain\": {\n \"description\": \"Operator uses the domain to generate a hostname for a route.\\nIn a conjunction with labels it creates a route, which is served by a non-default Ingress controller.\\nThe generated host name will follow this pattern: `\\u003croute-name\\u003e-\\u003croute-namespace\\u003e.\\u003cdomain\\u003e`.\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"description\": \"Comma separated list of labels that can be used to organize and categorize objects by scoping and selecting.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"devfileRegistryUrl\": {\n \"description\": \"Deprecated in favor of `externalDevfileRegistries` fields.\",\n \"type\": \"string\"\n },\n \"disableInternalClusterSVCNames\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nDisable internal cluster SVC names usage to communicate between components to speed up the traffic and avoid proxy issues.\",\n \"type\": \"boolean\"\n },\n \"externalDevfileRegistries\": {\n \"description\": \"External devfile registries, that serves sample, ready-to-use devfiles.\\nConfigure this in addition to a dedicated devfile registry (when `externalDevfileRegistry` is `false`)\\nor instead of it (when `externalDevfileRegistry` is `true`)\",\n \"items\": {\n \"description\": \"Settings for a configuration of the external devfile registries.\",\n \"properties\": {\n \"url\": {\n \"description\": \"Public URL of the devfile registry.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"externalDevfileRegistry\": {\n \"description\": \"Instructs the Operator on whether to deploy a dedicated devfile registry server.\\nBy default, a dedicated devfile registry server is started. When `externalDevfileRegistry` is `true`,\\nno such dedicated server will be started by the Operator and configure at least one\\ndevfile registry with `externalDevfileRegistries` field.\",\n \"type\": \"boolean\"\n },\n \"externalPluginRegistry\": {\n \"description\": \"Instructs the Operator on whether to deploy a dedicated plugin registry server.\\nBy default, a dedicated plugin registry server is started. When `externalPluginRegistry` is `true`, no such dedicated server\\nwill be started by the Operator and you will have to manually set the `pluginRegistryUrl` field.\",\n \"type\": \"boolean\"\n },\n \"gitSelfSignedCert\": {\n \"description\": \"When enabled, the certificate from `che-git-self-signed-cert` ConfigMap will be propagated to the Che components and provide particular configuration for Git.\\nNote, the `che-git-self-signed-cert` ConfigMap must have `app.kubernetes.io/part-of=che.eclipse.org` label.\",\n \"type\": \"boolean\"\n },\n \"nonProxyHosts\": {\n \"description\": \"List of hosts that will be reached directly, bypassing the proxy.\\nSpecify wild card domain use the following form `.\\u003cDOMAIN\\u003e` and `|` as delimiter, for example: `localhost|.my.host.com|123.42.12.32`\\nOnly use when configuring a proxy is required. Operator respects OpenShift cluster wide proxy configuration and no additional configuration is required,\\nbut defining `nonProxyHosts` in a custom resource leads to merging non proxy hosts lists from the cluster proxy configuration and ones defined in the custom resources.\\nSee the doc https://docs.openshift.com/container-platform/4.4/networking/enable-cluster-wide-proxy.html. See also the `proxyURL` fields.\",\n \"type\": \"string\"\n },\n \"openVSXRegistryURL\": {\n \"description\": \"Open VSX registry URL. If omitted an embedded instance will be used.\",\n \"type\": \"string\"\n },\n \"pluginRegistryCpuLimit\": {\n \"description\": \"Overrides the CPU limit used in the plugin registry deployment.\\nIn cores. (500m = .5 cores). Default to 500m.\",\n \"type\": \"string\"\n },\n \"pluginRegistryCpuRequest\": {\n \"description\": \"Overrides the CPU request used in the plugin registry deployment.\\nIn cores. (500m = .5 cores). Default to 100m.\",\n \"type\": \"string\"\n },\n \"pluginRegistryEnv\": {\n \"description\": \"List of environment variables to set in the devfile registry container.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"pluginRegistryImage\": {\n \"description\": \"Overrides the container image used in the plugin registry deployment.\\nThis includes the image tag. Omit it or leave it empty to use the default container image provided by the Operator.\",\n \"type\": \"string\"\n },\n \"pluginRegistryIngress\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nPlugin registry ingress custom settings.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata.\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"description\": \"Comma separated list of labels that can be used to organize and categorize objects by scoping and selecting.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"pluginRegistryMemoryLimit\": {\n \"description\": \"Overrides the memory limit used in the plugin registry deployment. Defaults to 1536Mi.\",\n \"type\": \"string\"\n },\n \"pluginRegistryMemoryRequest\": {\n \"description\": \"Overrides the memory request used in the plugin registry deployment. Defaults to 16Mi.\",\n \"type\": \"string\"\n },\n \"pluginRegistryPullPolicy\": {\n \"description\": \"Overrides the image pull policy used in the plugin registry deployment.\\nDefault value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.\",\n \"type\": \"string\"\n },\n \"pluginRegistryRoute\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nPlugin registry route custom settings.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata.\",\n \"type\": \"object\"\n },\n \"domain\": {\n \"description\": \"Operator uses the domain to generate a hostname for a route.\\nIn a conjunction with labels it creates a route, which is served by a non-default Ingress controller.\\nThe generated host name will follow this pattern: `\\u003croute-name\\u003e-\\u003croute-namespace\\u003e.\\u003cdomain\\u003e`.\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"description\": \"Comma separated list of labels that can be used to organize and categorize objects by scoping and selecting.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"pluginRegistryUrl\": {\n \"description\": \"Public URL of the plugin registry that serves sample ready-to-use devfiles.\\nSet this ONLY when a use of an external devfile registry is needed.\\nSee the `externalPluginRegistry` field. By default, this will be automatically calculated by the Operator.\",\n \"type\": \"string\"\n },\n \"proxyPassword\": {\n \"description\": \"Password of the proxy server.\\nOnly use when proxy configuration is required. See the `proxyURL`, `proxyUser` and `proxySecret` fields.\",\n \"type\": \"string\"\n },\n \"proxyPort\": {\n \"description\": \"Port of the proxy server. Only use when configuring a proxy is required. See also the `proxyURL` and `nonProxyHosts` fields.\",\n \"type\": \"string\"\n },\n \"proxySecret\": {\n \"description\": \"The secret that contains `user` and `password` for a proxy server. When the secret is defined, the `proxyUser` and `proxyPassword` are ignored.\\nThe secret must have `app.kubernetes.io/part-of=che.eclipse.org` label.\",\n \"type\": \"string\"\n },\n \"proxyURL\": {\n \"description\": \"URL (protocol+host name) of the proxy server. This drives the appropriate changes in the `JAVA_OPTS` and `https(s)_proxy` variables\\nin the Che server and workspaces containers.\\nOnly use when configuring a proxy is required. Operator respects OpenShift cluster wide proxy configuration\\nand no additional configuration is required, but defining `proxyUrl` in a custom resource leads to overrides the cluster proxy configuration\\nwith fields `proxyUrl`, `proxyPort`, `proxyUser` and `proxyPassword` from the custom resource.\\nSee the doc https://docs.openshift.com/container-platform/4.4/networking/enable-cluster-wide-proxy.html. See also the `proxyPort` and `nonProxyHosts` fields.\",\n \"type\": \"string\"\n },\n \"proxyUser\": {\n \"description\": \"User name of the proxy server. Only use when configuring a proxy is required. See also the `proxyURL`, `proxyPassword` and `proxySecret` fields.\",\n \"type\": \"string\"\n },\n \"selfSignedCert\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nThe Che Operator will automatically detect whether the router certificate is self-signed and propagate it to other components, such as the Che server.\",\n \"type\": \"boolean\"\n },\n \"serverCpuLimit\": {\n \"description\": \"Overrides the CPU limit used in the Che server deployment\\nIn cores. (500m = .5 cores). Default to 1.\",\n \"type\": \"string\"\n },\n \"serverCpuRequest\": {\n \"description\": \"Overrides the CPU request used in the Che server deployment\\nIn cores. (500m = .5 cores). Default to 100m.\",\n \"type\": \"string\"\n },\n \"serverExposureStrategy\": {\n \"description\": \"Deprecated. The value of this flag is ignored.\\nSets the server and workspaces exposure type.\\nPossible values are `multi-host`, `single-host`, `default-host`. Defaults to `multi-host`, which creates a separate ingress, or OpenShift routes, for every required endpoint.\\n`single-host` makes Che exposed on a single host name with workspaces exposed on subpaths.\\nRead the docs to learn about the limitations of this approach.\\nAlso consult the `singleHostExposureType` property to further configure how the Operator and the Che server make that happen on Kubernetes.\\n`default-host` exposes the Che server on the host of the cluster. Read the docs to learn about the limitations of this approach.\",\n \"type\": \"string\"\n },\n \"serverMemoryLimit\": {\n \"description\": \"Overrides the memory limit used in the Che server deployment. Defaults to 1Gi.\",\n \"type\": \"string\"\n },\n \"serverMemoryRequest\": {\n \"description\": \"Overrides the memory request used in the Che server deployment. Defaults to 512Mi.\",\n \"type\": \"string\"\n },\n \"serverTrustStoreConfigMapName\": {\n \"description\": \"Name of the ConfigMap with public certificates to add to Java trust store of the Che server.\\nThis is often required when adding the OpenShift OAuth provider, which has HTTPS endpoint signed with self-signed cert.\\nThe Che server must be aware of its CA cert to be able to request it. This is disabled by default.\\nThe Config Map must have `app.kubernetes.io/part-of=che.eclipse.org` label.\",\n \"type\": \"string\"\n },\n \"singleHostGatewayConfigMapLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The labels that need to be present in the ConfigMaps representing the gateway configuration.\",\n \"type\": \"object\"\n },\n \"singleHostGatewayConfigSidecarImage\": {\n \"description\": \"The image used for the gateway sidecar that provides configuration to the gateway. Omit it or leave it empty to use the default container image provided by the Operator.\",\n \"type\": \"string\"\n },\n \"singleHostGatewayImage\": {\n \"description\": \"The image used for the gateway in the single host mode. Omit it or leave it empty to use the default container image provided by the Operator.\",\n \"type\": \"string\"\n },\n \"tlsSupport\": {\n \"description\": \"Deprecated. Instructs the Operator to deploy Che in TLS mode. This is enabled by default. Disabling TLS sometimes cause malfunction of some Che components.\",\n \"type\": \"boolean\"\n },\n \"useInternalClusterSVCNames\": {\n \"description\": \"Deprecated in favor of `disableInternalClusterSVCNames`.\",\n \"type\": \"boolean\"\n },\n \"workspaceDefaultComponents\": {\n \"description\": \"Default components applied to DevWorkspaces.\\nThese default components are meant to be used when a Devfile does not contain any components.\",\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"description\": \"Map of implementation-dependant free-form YAML attributes.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"componentType\": {\n \"description\": \"Type of component\",\n \"enum\": [\n \"Container\",\n \"Kubernetes\",\n \"Openshift\",\n \"Volume\",\n \"Image\",\n \"Plugin\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"container\": {\n \"description\": \"Allows adding and configuring devworkspace-related containers\",\n \"properties\": {\n \"annotation\": {\n \"description\": \"Annotations that should be added to specific resources for this container\",\n \"properties\": {\n \"deployment\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations to be added to deployment\",\n \"type\": \"object\"\n },\n \"service\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations to be added to service\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"args\": {\n \"description\": \"The arguments to supply to the command running the dockerimage component. The arguments are supplied either to the default command provided in the image or to the overridden command.\\n\\n\\nDefaults to an empty array, meaning use whatever is defined in the image.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"The command to run in the dockerimage component instead of the default one provided in the image.\\n\\n\\nDefaults to an empty array, meaning use whatever is defined in the image.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"cpuLimit\": {\n \"type\": \"string\"\n },\n \"cpuRequest\": {\n \"type\": \"string\"\n },\n \"dedicatedPod\": {\n \"description\": \"Specify if a container should run in its own separated pod,\\ninstead of running as part of the main development environment pod.\\n\\n\\nDefault value is `false`\",\n \"type\": \"boolean\"\n },\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"annotation\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations to be added to Kubernetes Ingress or Openshift Route\",\n \"type\": \"object\"\n },\n \"attributes\": {\n \"description\": \"Map of implementation-dependant string-based free-form attributes.\\n\\n\\nExamples of Che-specific attributes:\\n\\n\\n- cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\",\\n\\n\\n- type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"exposure\": {\n \"default\": \"public\",\n \"description\": \"Describes how the endpoint should be exposed on the network.\\n\\n\\n- `public` means that the endpoint will be exposed on the public network, typically through\\na K8S ingress or an OpenShift route.\\n\\n\\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD,\\ntypically by K8S services, to be consumed by other elements running\\non the same cloud internal network.\\n\\n\\n- `none` means that the endpoint will not be exposed and will only be accessible\\ninside the main devworkspace POD, on a local address.\\n\\n\\nDefault value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"maxLength\": 63,\n \"pattern\": \"^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"http\",\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint.\\n\\n\\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection.\\nIt will be automaticaly promoted to `https` when the `secure` field is set to `true`.\\n\\n\\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\\n\\n\\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection.\\nIt will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\\n\\n\\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\\n\\n\\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\\n\\n\\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\\n\\n\\nDefault value is `http`\",\n \"enum\": [\n \"http\",\n \"https\",\n \"ws\",\n \"wss\",\n \"tcp\",\n \"udp\"\n ],\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some\\nauthentication process. This requires a protocol of `https` or `wss`.\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"description\": \"Port number to be used within the container component. The same port cannot\\nbe used by two different container components.\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\",\n \"targetPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"Environment variables used in this container.\\n\\n\\nThe following variables are reserved and cannot be overridden via env:\\n\\n\\n - `$PROJECTS_ROOT`\\n\\n\\n - `$PROJECT_SOURCE`\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"memoryLimit\": {\n \"type\": \"string\"\n },\n \"memoryRequest\": {\n \"type\": \"string\"\n },\n \"mountSources\": {\n \"description\": \"Toggles whether or not the project source code should\\nbe mounted in the component.\\n\\n\\nDefaults to true for all component types except plugins and components that set `dedicatedPod` to true.\",\n \"type\": \"boolean\"\n },\n \"sourceMapping\": {\n \"default\": \"/projects\",\n \"description\": \"Optional specification of the path in the container where\\nproject sources should be transferred/mounted when `mountSources` is `true`.\\nWhen omitted, the default value of /projects is used.\",\n \"type\": \"string\"\n },\n \"volumeMounts\": {\n \"description\": \"List of volumes mounts that should be mounted is this container.\",\n \"items\": {\n \"description\": \"Volume that should be mounted to a component container\",\n \"properties\": {\n \"name\": {\n \"description\": \"The volume mount name is the name of an existing `Volume` component.\\nIf several containers mount the same volume name\\nthen they will reuse the same volume and will be able to access to the same files.\",\n \"maxLength\": 63,\n \"pattern\": \"^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"The path in the component container where the volume should be mounted.\\nIf not path is mentioned, default path is the is `/\\u003cname\\u003e`.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"image\"\n ],\n \"type\": \"object\"\n },\n \"custom\": {\n \"description\": \"Custom component whose logic is implementation-dependant\\nand should be provided by the user\\npossibly through some dedicated controller\",\n \"properties\": {\n \"componentClass\": {\n \"description\": \"Class of component that the associated implementation controller\\nshould use to process this command with the appropriate logic\",\n \"type\": \"string\"\n },\n \"embeddedResource\": {\n \"description\": \"Additional free-form configuration for this custom component\\nthat the implementation controller will know how to use\",\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n }\n },\n \"required\": [\n \"componentClass\",\n \"embeddedResource\"\n ],\n \"type\": \"object\"\n },\n \"image\": {\n \"description\": \"Allows specifying the definition of an image for outer loop builds\",\n \"properties\": {\n \"autoBuild\": {\n \"description\": \"Defines if the image should be built during startup.\\n\\n\\nDefault value is `false`\",\n \"type\": \"boolean\"\n },\n \"dockerfile\": {\n \"description\": \"Allows specifying dockerfile type build\",\n \"properties\": {\n \"args\": {\n \"description\": \"The arguments to supply to the dockerfile build.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"buildContext\": {\n \"description\": \"Path of source directory to establish build context. Defaults to ${PROJECT_SOURCE} in the container\",\n \"type\": \"string\"\n },\n \"devfileRegistry\": {\n \"description\": \"Dockerfile's Devfile Registry source\",\n \"properties\": {\n \"id\": {\n \"description\": \"Id in a devfile registry that contains a Dockerfile. The src in the OCI registry\\nrequired for the Dockerfile build will be downloaded for building the image.\",\n \"type\": \"string\"\n },\n \"registryUrl\": {\n \"description\": \"Devfile Registry URL to pull the Dockerfile from when using the Devfile Registry as Dockerfile src.\\nTo ensure the Dockerfile gets resolved consistently in different environments,\\nit is recommended to always specify the `devfileRegistryUrl` when `Id` is used.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"git\": {\n \"description\": \"Dockerfile's Git source\",\n \"properties\": {\n \"checkoutFrom\": {\n \"description\": \"Defines from what the project should be checked out. Required if there are more than one remote configured\",\n \"properties\": {\n \"remote\": {\n \"description\": \"The remote name should be used as init. Required if there are more than one remote configured\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"The revision to checkout from. Should be branch name, tag or commit id.\\nDefault branch is used if missing or specified revision is not found.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"fileLocation\": {\n \"description\": \"Location of the Dockerfile in the Git repository when using git as Dockerfile src.\\nDefaults to Dockerfile.\",\n \"type\": \"string\"\n },\n \"remotes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The remotes map which should be initialized in the git project.\\nProjects must have at least one remote configured while StarterProjects \\u0026 Image Component's Git source can only have at most one remote configured.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"remotes\"\n ],\n \"type\": \"object\"\n },\n \"rootRequired\": {\n \"description\": \"Specify if a privileged builder pod is required.\\n\\n\\nDefault value is `false`\",\n \"type\": \"boolean\"\n },\n \"srcType\": {\n \"description\": \"Type of Dockerfile src\",\n \"enum\": [\n \"Uri\",\n \"DevfileRegistry\",\n \"Git\"\n ],\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"URI Reference of a Dockerfile.\\nIt can be a full URL or a relative URI from the current devfile as the base URI.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"imageName\": {\n \"description\": \"Name of the image for the resulting outerloop build\",\n \"type\": \"string\"\n },\n \"imageType\": {\n \"description\": \"Type of image\",\n \"enum\": [\n \"Dockerfile\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"imageName\"\n ],\n \"type\": \"object\"\n },\n \"kubernetes\": {\n \"description\": \"Allows importing into the devworkspace the Kubernetes resources\\ndefined in a given manifest. For example this allows reusing the Kubernetes\\ndefinitions used to deploy some runtime components in production.\",\n \"properties\": {\n \"deployByDefault\": {\n \"description\": \"Defines if the component should be deployed during startup.\\n\\n\\nDefault value is `false`\",\n \"type\": \"boolean\"\n },\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"annotation\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations to be added to Kubernetes Ingress or Openshift Route\",\n \"type\": \"object\"\n },\n \"attributes\": {\n \"description\": \"Map of implementation-dependant string-based free-form attributes.\\n\\n\\nExamples of Che-specific attributes:\\n\\n\\n- cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\",\\n\\n\\n- type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"exposure\": {\n \"default\": \"public\",\n \"description\": \"Describes how the endpoint should be exposed on the network.\\n\\n\\n- `public` means that the endpoint will be exposed on the public network, typically through\\na K8S ingress or an OpenShift route.\\n\\n\\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD,\\ntypically by K8S services, to be consumed by other elements running\\non the same cloud internal network.\\n\\n\\n- `none` means that the endpoint will not be exposed and will only be accessible\\ninside the main devworkspace POD, on a local address.\\n\\n\\nDefault value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"maxLength\": 63,\n \"pattern\": \"^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"http\",\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint.\\n\\n\\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection.\\nIt will be automaticaly promoted to `https` when the `secure` field is set to `true`.\\n\\n\\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\\n\\n\\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection.\\nIt will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\\n\\n\\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\\n\\n\\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\\n\\n\\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\\n\\n\\nDefault value is `http`\",\n \"enum\": [\n \"http\",\n \"https\",\n \"ws\",\n \"wss\",\n \"tcp\",\n \"udp\"\n ],\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some\\nauthentication process. This requires a protocol of `https` or `wss`.\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"description\": \"Port number to be used within the container component. The same port cannot\\nbe used by two different container components.\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\",\n \"targetPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"inlined\": {\n \"description\": \"Inlined manifest\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Kubernetes-like location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location in a file fetched from a uri.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the component\\nfrom other elements (such as commands) or from an external\\ndevfile that may reference this component through a parent or a plugin.\",\n \"maxLength\": 63,\n \"pattern\": \"^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\",\n \"type\": \"string\"\n },\n \"openshift\": {\n \"description\": \"Allows importing into the devworkspace the OpenShift resources\\ndefined in a given manifest. For example this allows reusing the OpenShift\\ndefinitions used to deploy some runtime components in production.\",\n \"properties\": {\n \"deployByDefault\": {\n \"description\": \"Defines if the component should be deployed during startup.\\n\\n\\nDefault value is `false`\",\n \"type\": \"boolean\"\n },\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"annotation\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations to be added to Kubernetes Ingress or Openshift Route\",\n \"type\": \"object\"\n },\n \"attributes\": {\n \"description\": \"Map of implementation-dependant string-based free-form attributes.\\n\\n\\nExamples of Che-specific attributes:\\n\\n\\n- cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\",\\n\\n\\n- type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"exposure\": {\n \"default\": \"public\",\n \"description\": \"Describes how the endpoint should be exposed on the network.\\n\\n\\n- `public` means that the endpoint will be exposed on the public network, typically through\\na K8S ingress or an OpenShift route.\\n\\n\\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD,\\ntypically by K8S services, to be consumed by other elements running\\non the same cloud internal network.\\n\\n\\n- `none` means that the endpoint will not be exposed and will only be accessible\\ninside the main devworkspace POD, on a local address.\\n\\n\\nDefault value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"maxLength\": 63,\n \"pattern\": \"^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"http\",\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint.\\n\\n\\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection.\\nIt will be automaticaly promoted to `https` when the `secure` field is set to `true`.\\n\\n\\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\\n\\n\\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection.\\nIt will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\\n\\n\\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\\n\\n\\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\\n\\n\\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\\n\\n\\nDefault value is `http`\",\n \"enum\": [\n \"http\",\n \"https\",\n \"ws\",\n \"wss\",\n \"tcp\",\n \"udp\"\n ],\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some\\nauthentication process. This requires a protocol of `https` or `wss`.\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"description\": \"Port number to be used within the container component. The same port cannot\\nbe used by two different container components.\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\",\n \"targetPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"inlined\": {\n \"description\": \"Inlined manifest\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Kubernetes-like location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location in a file fetched from a uri.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"plugin\": {\n \"description\": \"Allows importing a plugin.\\n\\n\\nPlugins are mainly imported devfiles that contribute components, commands\\nand events as a consistent single unit. They are defined in either YAML files\\nfollowing the devfile syntax,\\nor as `DevWorkspaceTemplate` Kubernetes Custom Resources\",\n \"properties\": {\n \"commands\": {\n \"description\": \"Overrides of commands encapsulated in a parent devfile or a plugin.\\nOverriding is done according to K8S strategic merge patch standard rules.\",\n \"items\": {\n \"properties\": {\n \"apply\": {\n \"description\": \"Command that consists in applying a given component definition,\\ntypically bound to a devworkspace event.\\n\\n\\nFor example, when an `apply` command is bound to a `preStart` event,\\nand references a `container` component, it will start the container as a\\nK8S initContainer in the devworkspace POD, unless the component has its\\n`dedicatedPod` field set to `true`.\\n\\n\\nWhen no `apply` command exist for a given component,\\nit is assumed the component will be applied at devworkspace start\\nby default, unless `deployByDefault` for that component is set to false.\",\n \"properties\": {\n \"component\": {\n \"description\": \"Describes component that will be applied\",\n \"type\": \"string\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\",\n \"deploy\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command\\nto be used in Editor UI menus for example\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"attributes\": {\n \"description\": \"Map of implementation-dependant free-form YAML attributes.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"commandType\": {\n \"description\": \"Type of devworkspace command\",\n \"enum\": [\n \"Exec\",\n \"Apply\",\n \"Composite\"\n ],\n \"type\": \"string\"\n },\n \"composite\": {\n \"description\": \"Composite command that allows executing several sub-commands\\neither sequentially or concurrently\",\n \"properties\": {\n \"commands\": {\n \"description\": \"The commands that comprise this composite command\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\",\n \"deploy\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command\\nto be used in Editor UI menus for example\",\n \"type\": \"string\"\n },\n \"parallel\": {\n \"description\": \"Indicates if the sub-commands should be executed concurrently\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"exec\": {\n \"description\": \"CLI Command executed in an existing component container\",\n \"properties\": {\n \"commandLine\": {\n \"description\": \"The actual command-line string\\n\\n\\nSpecial variables that can be used:\\n\\n\\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\\n\\n\\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/\\u003cproject-name\\u003e). If there are multiple projects, this will point to the directory of the first one.\",\n \"type\": \"string\"\n },\n \"component\": {\n \"description\": \"Describes component to which given action relates\",\n \"type\": \"string\"\n },\n \"env\": {\n \"description\": \"Optional list of environment variables that have to be set\\nbefore running the command\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\",\n \"deploy\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"hotReloadCapable\": {\n \"description\": \"Specify whether the command is restarted or not when the source code changes.\\nIf set to `true` the command won't be restarted.\\nA *hotReloadCapable* `run` or `debug` command is expected to handle file changes on its own and won't be restarted.\\nA *hotReloadCapable* `build` command is expected to be executed only once and won't be executed again.\\nThis field is taken into account only for commands `build`, `run` and `debug` with `isDefault` set to `true`.\\n\\n\\nDefault value is `false`\",\n \"type\": \"boolean\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command\\nto be used in Editor UI menus for example\",\n \"type\": \"string\"\n },\n \"workingDir\": {\n \"description\": \"Working directory where the command should be executed\\n\\n\\nSpecial variables that can be used:\\n\\n\\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\\n\\n\\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/\\u003cproject-name\\u003e). If there are multiple projects, this will point to the directory of the first one.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing\\nthis command in composite commands, from\\na parent, or in events.\",\n \"maxLength\": 63,\n \"pattern\": \"^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"components\": {\n \"description\": \"Overrides of components encapsulated in a parent devfile or a plugin.\\nOverriding is done according to K8S strategic merge patch standard rules.\",\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"description\": \"Map of implementation-dependant free-form YAML attributes.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"componentType\": {\n \"description\": \"Type of component\",\n \"enum\": [\n \"Container\",\n \"Kubernetes\",\n \"Openshift\",\n \"Volume\",\n \"Image\"\n ],\n \"type\": \"string\"\n },\n \"container\": {\n \"description\": \"Allows adding and configuring devworkspace-related containers\",\n \"properties\": {\n \"annotation\": {\n \"description\": \"Annotations that should be added to specific resources for this container\",\n \"properties\": {\n \"deployment\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations to be added to deployment\",\n \"type\": \"object\"\n },\n \"service\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations to be added to service\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"args\": {\n \"description\": \"The arguments to supply to the command running the dockerimage component. The arguments are supplied either to the default command provided in the image or to the overridden command.\\n\\n\\nDefaults to an empty array, meaning use whatever is defined in the image.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"The command to run in the dockerimage component instead of the default one provided in the image.\\n\\n\\nDefaults to an empty array, meaning use whatever is defined in the image.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"cpuLimit\": {\n \"type\": \"string\"\n },\n \"cpuRequest\": {\n \"type\": \"string\"\n },\n \"dedicatedPod\": {\n \"description\": \"Specify if a container should run in its own separated pod,\\ninstead of running as part of the main development environment pod.\\n\\n\\nDefault value is `false`\",\n \"type\": \"boolean\"\n },\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"annotation\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations to be added to Kubernetes Ingress or Openshift Route\",\n \"type\": \"object\"\n },\n \"attributes\": {\n \"description\": \"Map of implementation-dependant string-based free-form attributes.\\n\\n\\nExamples of Che-specific attributes:\\n\\n\\n- cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\",\\n\\n\\n- type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network.\\n\\n\\n- `public` means that the endpoint will be exposed on the public network, typically through\\na K8S ingress or an OpenShift route.\\n\\n\\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD,\\ntypically by K8S services, to be consumed by other elements running\\non the same cloud internal network.\\n\\n\\n- `none` means that the endpoint will not be exposed and will only be accessible\\ninside the main devworkspace POD, on a local address.\\n\\n\\nDefault value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"maxLength\": 63,\n \"pattern\": \"^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint.\\n\\n\\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection.\\nIt will be automaticaly promoted to `https` when the `secure` field is set to `true`.\\n\\n\\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\\n\\n\\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection.\\nIt will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\\n\\n\\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\\n\\n\\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\\n\\n\\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\\n\\n\\nDefault value is `http`\",\n \"enum\": [\n \"http\",\n \"https\",\n \"ws\",\n \"wss\",\n \"tcp\",\n \"udp\"\n ],\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some\\nauthentication process. This requires a protocol of `https` or `wss`.\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"description\": \"Port number to be used within the container component. The same port cannot\\nbe used by two different container components.\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"Environment variables used in this container.\\n\\n\\nThe following variables are reserved and cannot be overridden via env:\\n\\n\\n - `$PROJECTS_ROOT`\\n\\n\\n - `$PROJECT_SOURCE`\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"memoryLimit\": {\n \"type\": \"string\"\n },\n \"memoryRequest\": {\n \"type\": \"string\"\n },\n \"mountSources\": {\n \"description\": \"Toggles whether or not the project source code should\\nbe mounted in the component.\\n\\n\\nDefaults to true for all component types except plugins and components that set `dedicatedPod` to true.\",\n \"type\": \"boolean\"\n },\n \"sourceMapping\": {\n \"description\": \"Optional specification of the path in the container where\\nproject sources should be transferred/mounted when `mountSources` is `true`.\\nWhen omitted, the default value of /projects is used.\",\n \"type\": \"string\"\n },\n \"volumeMounts\": {\n \"description\": \"List of volumes mounts that should be mounted is this container.\",\n \"items\": {\n \"description\": \"Volume that should be mounted to a component container\",\n \"properties\": {\n \"name\": {\n \"description\": \"The volume mount name is the name of an existing `Volume` component.\\nIf several containers mount the same volume name\\nthen they will reuse the same volume and will be able to access to the same files.\",\n \"maxLength\": 63,\n \"pattern\": \"^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"The path in the component container where the volume should be mounted.\\nIf not path is mentioned, default path is the is `/\\u003cname\\u003e`.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"image\": {\n \"description\": \"Allows specifying the definition of an image for outer loop builds\",\n \"properties\": {\n \"autoBuild\": {\n \"description\": \"Defines if the image should be built during startup.\\n\\n\\nDefault value is `false`\",\n \"type\": \"boolean\"\n },\n \"dockerfile\": {\n \"description\": \"Allows specifying dockerfile type build\",\n \"properties\": {\n \"args\": {\n \"description\": \"The arguments to supply to the dockerfile build.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"buildContext\": {\n \"description\": \"Path of source directory to establish build context. Defaults to ${PROJECT_SOURCE} in the container\",\n \"type\": \"string\"\n },\n \"devfileRegistry\": {\n \"description\": \"Dockerfile's Devfile Registry source\",\n \"properties\": {\n \"id\": {\n \"description\": \"Id in a devfile registry that contains a Dockerfile. The src in the OCI registry\\nrequired for the Dockerfile build will be downloaded for building the image.\",\n \"type\": \"string\"\n },\n \"registryUrl\": {\n \"description\": \"Devfile Registry URL to pull the Dockerfile from when using the Devfile Registry as Dockerfile src.\\nTo ensure the Dockerfile gets resolved consistently in different environments,\\nit is recommended to always specify the `devfileRegistryUrl` when `Id` is used.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"git\": {\n \"description\": \"Dockerfile's Git source\",\n \"properties\": {\n \"checkoutFrom\": {\n \"description\": \"Defines from what the project should be checked out. Required if there are more than one remote configured\",\n \"properties\": {\n \"remote\": {\n \"description\": \"The remote name should be used as init. Required if there are more than one remote configured\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"The revision to checkout from. Should be branch name, tag or commit id.\\nDefault branch is used if missing or specified revision is not found.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"fileLocation\": {\n \"description\": \"Location of the Dockerfile in the Git repository when using git as Dockerfile src.\\nDefaults to Dockerfile.\",\n \"type\": \"string\"\n },\n \"remotes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The remotes map which should be initialized in the git project.\\nProjects must have at least one remote configured while StarterProjects \\u0026 Image Component's Git source can only have at most one remote configured.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"rootRequired\": {\n \"description\": \"Specify if a privileged builder pod is required.\\n\\n\\nDefault value is `false`\",\n \"type\": \"boolean\"\n },\n \"srcType\": {\n \"description\": \"Type of Dockerfile src\",\n \"enum\": [\n \"Uri\",\n \"DevfileRegistry\",\n \"Git\"\n ],\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"URI Reference of a Dockerfile.\\nIt can be a full URL or a relative URI from the current devfile as the base URI.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"imageName\": {\n \"description\": \"Name of the image for the resulting outerloop build\",\n \"type\": \"string\"\n },\n \"imageType\": {\n \"description\": \"Type of image\",\n \"enum\": [\n \"Dockerfile\",\n \"AutoBuild\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"kubernetes\": {\n \"description\": \"Allows importing into the devworkspace the Kubernetes resources\\ndefined in a given manifest. For example this allows reusing the Kubernetes\\ndefinitions used to deploy some runtime components in production.\",\n \"properties\": {\n \"deployByDefault\": {\n \"description\": \"Defines if the component should be deployed during startup.\\n\\n\\nDefault value is `false`\",\n \"type\": \"boolean\"\n },\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"annotation\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations to be added to Kubernetes Ingress or Openshift Route\",\n \"type\": \"object\"\n },\n \"attributes\": {\n \"description\": \"Map of implementation-dependant string-based free-form attributes.\\n\\n\\nExamples of Che-specific attributes:\\n\\n\\n- cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\",\\n\\n\\n- type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network.\\n\\n\\n- `public` means that the endpoint will be exposed on the public network, typically through\\na K8S ingress or an OpenShift route.\\n\\n\\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD,\\ntypically by K8S services, to be consumed by other elements running\\non the same cloud internal network.\\n\\n\\n- `none` means that the endpoint will not be exposed and will only be accessible\\ninside the main devworkspace POD, on a local address.\\n\\n\\nDefault value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"maxLength\": 63,\n \"pattern\": \"^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint.\\n\\n\\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection.\\nIt will be automaticaly promoted to `https` when the `secure` field is set to `true`.\\n\\n\\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\\n\\n\\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection.\\nIt will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\\n\\n\\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\\n\\n\\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\\n\\n\\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\\n\\n\\nDefault value is `http`\",\n \"enum\": [\n \"http\",\n \"https\",\n \"ws\",\n \"wss\",\n \"tcp\",\n \"udp\"\n ],\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some\\nauthentication process. This requires a protocol of `https` or `wss`.\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"description\": \"Port number to be used within the container component. The same port cannot\\nbe used by two different container components.\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"inlined\": {\n \"description\": \"Inlined manifest\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Kubernetes-like location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location in a file fetched from a uri.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the component\\nfrom other elements (such as commands) or from an external\\ndevfile that may reference this component through a parent or a plugin.\",\n \"maxLength\": 63,\n \"pattern\": \"^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\",\n \"type\": \"string\"\n },\n \"openshift\": {\n \"description\": \"Allows importing into the devworkspace the OpenShift resources\\ndefined in a given manifest. For example this allows reusing the OpenShift\\ndefinitions used to deploy some runtime components in production.\",\n \"properties\": {\n \"deployByDefault\": {\n \"description\": \"Defines if the component should be deployed during startup.\\n\\n\\nDefault value is `false`\",\n \"type\": \"boolean\"\n },\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"annotation\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations to be added to Kubernetes Ingress or Openshift Route\",\n \"type\": \"object\"\n },\n \"attributes\": {\n \"description\": \"Map of implementation-dependant string-based free-form attributes.\\n\\n\\nExamples of Che-specific attributes:\\n\\n\\n- cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\",\\n\\n\\n- type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network.\\n\\n\\n- `public` means that the endpoint will be exposed on the public network, typically through\\na K8S ingress or an OpenShift route.\\n\\n\\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD,\\ntypically by K8S services, to be consumed by other elements running\\non the same cloud internal network.\\n\\n\\n- `none` means that the endpoint will not be exposed and will only be accessible\\ninside the main devworkspace POD, on a local address.\\n\\n\\nDefault value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"maxLength\": 63,\n \"pattern\": \"^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint.\\n\\n\\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection.\\nIt will be automaticaly promoted to `https` when the `secure` field is set to `true`.\\n\\n\\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\\n\\n\\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection.\\nIt will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\\n\\n\\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\\n\\n\\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\\n\\n\\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\\n\\n\\nDefault value is `http`\",\n \"enum\": [\n \"http\",\n \"https\",\n \"ws\",\n \"wss\",\n \"tcp\",\n \"udp\"\n ],\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some\\nauthentication process. This requires a protocol of `https` or `wss`.\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"description\": \"Port number to be used within the container component. The same port cannot\\nbe used by two different container components.\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"inlined\": {\n \"description\": \"Inlined manifest\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Kubernetes-like location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location in a file fetched from a uri.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volume\": {\n \"description\": \"Allows specifying the definition of a volume\\nshared by several other components\",\n \"properties\": {\n \"ephemeral\": {\n \"description\": \"Ephemeral volumes are not stored persistently across restarts. Defaults\\nto false\",\n \"type\": \"boolean\"\n },\n \"size\": {\n \"description\": \"Size of the volume\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"Id in a registry that contains a Devfile yaml file\",\n \"type\": \"string\"\n },\n \"importReferenceType\": {\n \"description\": \"type of location from where the referenced template structure should be retrieved\",\n \"enum\": [\n \"Uri\",\n \"Id\",\n \"Kubernetes\"\n ],\n \"type\": \"string\"\n },\n \"kubernetes\": {\n \"description\": \"Reference to a Kubernetes CRD of type DevWorkspaceTemplate\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"registryUrl\": {\n \"description\": \"Registry URL to pull the parent devfile from when using id in the parent reference.\\nTo ensure the parent devfile gets resolved consistently in different environments,\\nit is recommended to always specify the `registryUrl` when `id` is used.\",\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"URI Reference of a parent devfile YAML file.\\nIt can be a full URL or a relative URI with the current devfile as the base URI.\",\n \"type\": \"string\"\n },\n \"version\": {\n \"description\": \"Specific stack/sample version to pull the parent devfile from, when using id in the parent reference.\\nTo specify `version`, `id` must be defined and used as the import reference source.\\n`version` can be either a specific stack version, or `latest`.\\nIf no `version` specified, default version will be used.\",\n \"pattern\": \"^(latest)|(([1-9])\\\\.([0-9]+)\\\\.([0-9]+)(\\\\-[0-9a-z-]+(\\\\.[0-9a-z-]+)*)?(\\\\+[0-9A-Za-z-]+(\\\\.[0-9A-Za-z-]+)*)?)$\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volume\": {\n \"description\": \"Allows specifying the definition of a volume\\nshared by several other components\",\n \"properties\": {\n \"ephemeral\": {\n \"description\": \"Ephemeral volumes are not stored persistently across restarts. Defaults\\nto false\",\n \"type\": \"boolean\"\n },\n \"size\": {\n \"description\": \"Size of the volume\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workspaceDefaultEditor\": {\n \"default\": \"che-incubator/che-code/latest\",\n \"description\": \"The default editor to workspace create with. It could be a plugin ID or a URI.\\nThe plugin ID must have `publisher/plugin/version`.\\nThe URI must start from `http`.\",\n \"type\": \"string\"\n },\n \"workspaceNamespaceDefault\": {\n \"description\": \"Defines Kubernetes default namespace in which user's workspaces are created for a case when a user does not override it.\\nIt's possible to use `\\u003cusername\\u003e`, `\\u003cuserid\\u003e` and `\\u003cworkspaceid\\u003e` placeholders, such as che-workspace-\\u003cusername\\u003e.\\nIn that case, a new namespace will be created for each user or workspace.\",\n \"type\": \"string\"\n },\n \"workspacePodNodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The node selector that limits the nodes that can run the workspace pods.\",\n \"type\": \"object\"\n },\n \"workspacePodTolerations\": {\n \"description\": \"The pod tolerations put on the workspace pods to limit where the workspace pods can run.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workspacesDefaultPlugins\": {\n \"description\": \"Default plug-ins applied to Devworkspaces.\",\n \"items\": {\n \"properties\": {\n \"editor\": {\n \"description\": \"The editor id to specify default plug-ins for.\",\n \"type\": \"string\"\n },\n \"plugins\": {\n \"description\": \"Default plug-in uris for the specified editor.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"storage\": {\n \"description\": \"Configuration settings related to the persistent storage used by the Che installation.\",\n \"properties\": {\n \"perWorkspaceStrategyPVCStorageClassName\": {\n \"description\": \"Storage class for the Persistent Volume Claims dedicated to the Che workspaces. When omitted or left blank, a default storage class is used.\",\n \"type\": \"string\"\n },\n \"perWorkspaceStrategyPvcClaimSize\": {\n \"description\": \"Size of the persistent volume claim for workspaces.\",\n \"type\": \"string\"\n },\n \"postgresPVCStorageClassName\": {\n \"description\": \"Storage class for the Persistent Volume Claim dedicated to the PostgreSQL database. When omitted or left blank, a default storage class is used.\",\n \"type\": \"string\"\n },\n \"preCreateSubPaths\": {\n \"description\": \"Instructs the Che server to start a special Pod to pre-create a sub-path in the Persistent Volumes.\\nDefaults to `false`, however it will need to enable it according to the configuration of your Kubernetes cluster.\",\n \"type\": \"boolean\"\n },\n \"pvcClaimSize\": {\n \"description\": \"Size of the persistent volume claim for workspaces. Defaults to `10Gi`.\",\n \"type\": \"string\"\n },\n \"pvcJobsImage\": {\n \"description\": \"Overrides the container image used to create sub-paths in the Persistent Volumes.\\nThis includes the image tag. Omit it or leave it empty to use the default container image provided by the Operator. See also the `preCreateSubPaths` field.\",\n \"type\": \"string\"\n },\n \"pvcStrategy\": {\n \"description\": \"Persistent volume claim strategy for the Che server. This Can be:`common` (all workspaces PVCs in one volume),\\n`per-workspace` (one PVC per workspace for all declared volumes) and `unique` (one PVC per declared volume). Defaults to `common`.\",\n \"type\": \"string\"\n },\n \"workspacePVCStorageClassName\": {\n \"description\": \"Storage class for the Persistent Volume Claims dedicated to the Che workspaces. When omitted or left blank, a default storage class is used.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Che Cluster\",\n \"type\": \"object\"\n}", + "version": "org.eclipse.che/v1" + }, + "configuration": null, + "description": "", + "displayName": "Che Cluster", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://eclipse-che.github.io/che-operator/charts/stable/eclipse-che-7.91.0.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "Eclipse Che", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://eclipse-che.github.io/che-operator/charts/stable/eclipse-che-7.91.0.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "7.91.0" + }, + "name": "eclipse-che", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Application Definition \u0026 Image Build", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003emeshery-logo-light\u003c/title\u003e\u003cpolygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/\u003e\u003cpolygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/\u003e\u003cpolygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/\u003e\u003cpath d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/\u003e\u003cpath d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/\u003e\u003cpolygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/\u003e\u003cpolygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/\u003e\u003cpath d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/\u003e\u003cpath d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/\u003e\u003cpolygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/eclipse-che/7.91.0/v1.0.0/model.json b/server/meshmodel/eclipse-che/7.91.0/v1.0.0/model.json new file mode 100644 index 00000000000..f43fa07b1b6 --- /dev/null +++ b/server/meshmodel/eclipse-che/7.91.0/v1.0.0/model.json @@ -0,0 +1,42 @@ +{ + "category": { + "name": "App Definition and Development" + }, + "displayName": "Eclipse Che", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "capabilities": null, + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "7.91.0" + }, + "name": "eclipse-che", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Application Definition \u0026 Image Build", + "version": "v1.0.0", + "components": null, + "relationships": null + } \ No newline at end of file diff --git a/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/AuthConfig.json b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/AuthConfig.json new file mode 100644 index 00000000000..6c61567231a --- /dev/null +++ b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/AuthConfig.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "AuthConfig", + "schema": "{\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"booleanExpr\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"configs\": {\n \"items\": {\n \"properties\": {\n \"apiKeyAuth\": {\n \"properties\": {\n \"aerospikeApikeyStorage\": {\n \"properties\": {\n \"allowInsecure\": {\n \"type\": \"boolean\"\n },\n \"batchSize\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"certPath\": {\n \"type\": \"string\"\n },\n \"commitAll\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"commitMaster\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"hostname\": {\n \"type\": \"string\"\n },\n \"keyPath\": {\n \"type\": \"string\"\n },\n \"labelSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"namespace\": {\n \"type\": \"string\"\n },\n \"nodeTlsName\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readModeAp\": {\n \"properties\": {\n \"readModeApAll\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"readModeApOne\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"readModeSc\": {\n \"properties\": {\n \"readModeScAllowUnavailable\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"readModeScLinearize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"readModeScReplica\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"readModeScSession\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"rootCaPath\": {\n \"type\": \"string\"\n },\n \"set\": {\n \"type\": \"string\"\n },\n \"tlsCurveGroups\": {\n \"items\": {\n \"properties\": {\n \"curveP256\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"curveP384\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"curveP521\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"x25519\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tlsVersion\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"apiKeySecretRefs\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headerName\": {\n \"type\": \"string\"\n },\n \"headersFromMetadata\": {\n \"additionalProperties\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"required\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersFromMetadataEntry\": {\n \"additionalProperties\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"required\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"k8sSecretApikeyStorage\": {\n \"properties\": {\n \"apiKeySecretRefs\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"labelSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"labelSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"properties\": {\n \"apr\": {\n \"properties\": {\n \"users\": {\n \"additionalProperties\": {\n \"properties\": {\n \"hashedPassword\": {\n \"type\": \"string\"\n },\n \"salt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"encryption\": {\n \"properties\": {\n \"apr\": {\n \"type\": \"object\"\n },\n \"sha1\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"realm\": {\n \"type\": \"string\"\n },\n \"userList\": {\n \"properties\": {\n \"users\": {\n \"additionalProperties\": {\n \"properties\": {\n \"hashedPassword\": {\n \"type\": \"string\"\n },\n \"salt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"hmacAuth\": {\n \"properties\": {\n \"parametersInHeaders\": {\n \"type\": \"object\"\n },\n \"secretRefs\": {\n \"properties\": {\n \"secretRefs\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"secretRefs\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"secretRefs\"\n ],\n \"type\": \"object\"\n },\n \"jwt\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"ldap\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"allowedGroups\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"disableGroupChecking\": {\n \"type\": \"boolean\"\n },\n \"groupLookupSettings\": {\n \"properties\": {\n \"checkGroupsWithServiceAccount\": {\n \"type\": \"boolean\"\n },\n \"credentialsSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"membershipAttributeName\": {\n \"type\": \"string\"\n },\n \"pool\": {\n \"properties\": {\n \"initialSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"searchFilter\": {\n \"type\": \"string\"\n },\n \"userDnTemplate\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"oauth\": {\n \"properties\": {\n \"appUrl\": {\n \"type\": \"string\"\n },\n \"authEndpointQueryParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"callbackPath\": {\n \"type\": \"string\"\n },\n \"clientId\": {\n \"type\": \"string\"\n },\n \"clientSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"issuerUrl\": {\n \"type\": \"string\"\n },\n \"scopes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"appUrl\"\n ],\n \"type\": \"object\"\n },\n \"oauth2\": {\n \"properties\": {\n \"accessTokenValidation\": {\n \"properties\": {\n \"cacheTimeout\": {\n \"type\": \"string\"\n },\n \"dynamicMetadataFromClaims\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"introspection\": {\n \"properties\": {\n \"clientId\": {\n \"type\": \"string\"\n },\n \"clientSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disableClientSecret\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"introspectionUrl\": {\n \"type\": \"string\"\n },\n \"userIdAttributeName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"introspectionUrl\"\n ],\n \"type\": \"object\"\n },\n \"introspectionUrl\": {\n \"type\": \"string\"\n },\n \"jwt\": {\n \"properties\": {\n \"issuer\": {\n \"type\": \"string\"\n },\n \"localJwks\": {\n \"properties\": {\n \"inlineString\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"inlineString\"\n ],\n \"type\": \"object\"\n },\n \"remoteJwks\": {\n \"properties\": {\n \"refreshInterval\": {\n \"type\": \"string\"\n },\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"url\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"requiredScopes\": {\n \"properties\": {\n \"scope\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"userinfoUrl\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"oauth2\": {\n \"properties\": {\n \"afterLogoutUrl\": {\n \"type\": \"string\"\n },\n \"appUrl\": {\n \"type\": \"string\"\n },\n \"authEndpoint\": {\n \"type\": \"string\"\n },\n \"authEndpointQueryParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"callbackPath\": {\n \"type\": \"string\"\n },\n \"clientId\": {\n \"type\": \"string\"\n },\n \"clientSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disableClientSecret\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"logoutPath\": {\n \"type\": \"string\"\n },\n \"revocationEndpoint\": {\n \"type\": \"string\"\n },\n \"scopes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"session\": {\n \"properties\": {\n \"cipherConfig\": {\n \"properties\": {\n \"keyRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"cookie\": {\n \"properties\": {\n \"allowRefreshing\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"keyPrefix\": {\n \"type\": \"string\"\n },\n \"targetDomain\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"cookieOptions\": {\n \"properties\": {\n \"domain\": {\n \"type\": \"string\"\n },\n \"httpOnly\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"maxAge\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"notSecure\": {\n \"type\": \"boolean\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"sameSite\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"failOnFetchFailure\": {\n \"type\": \"boolean\"\n },\n \"redis\": {\n \"properties\": {\n \"allowRefreshing\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"cookieName\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n },\n \"keyPrefix\": {\n \"type\": \"string\"\n },\n \"options\": {\n \"properties\": {\n \"db\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"host\": {\n \"type\": \"string\"\n },\n \"poolSize\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"socketType\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"tlsCertMountPath\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"preExpiryBuffer\": {\n \"type\": \"string\"\n },\n \"targetDomain\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tokenEndpoint\": {\n \"type\": \"string\"\n },\n \"tokenEndpointQueryParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"clientId\",\n \"appUrl\",\n \"callbackPath\",\n \"authEndpoint\",\n \"tokenEndpoint\"\n ],\n \"type\": \"object\"\n },\n \"oidcAuthorizationCode\": {\n \"properties\": {\n \"accessToken\": {\n \"properties\": {\n \"claimsToHeaders\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"type\": \"boolean\"\n },\n \"claim\": {\n \"type\": \"string\"\n },\n \"header\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"afterLogoutUrl\": {\n \"type\": \"string\"\n },\n \"appUrl\": {\n \"type\": \"string\"\n },\n \"authEndpointQueryParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"autoMapFromMetadata\": {\n \"properties\": {\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"azure\": {\n \"properties\": {\n \"claimsCachingOptions\": {\n \"properties\": {\n \"db\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"host\": {\n \"type\": \"string\"\n },\n \"poolSize\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"socketType\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"tlsCertMountPath\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"clientId\": {\n \"type\": \"string\"\n },\n \"clientSecret\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tenantId\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"callbackPath\": {\n \"type\": \"string\"\n },\n \"clientAuthentication\": {\n \"properties\": {\n \"clientSecret\": {\n \"properties\": {\n \"clientSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disableClientSecret\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"privateKeyJwt\": {\n \"properties\": {\n \"signingKeyRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"validFor\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"signingKeyRef\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"clientId\": {\n \"type\": \"string\"\n },\n \"clientSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"default\": {\n \"type\": \"object\"\n },\n \"disableClientSecret\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"discoveryOverride\": {\n \"properties\": {\n \"authEndpoint\": {\n \"type\": \"string\"\n },\n \"authMethods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"claims\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"endSessionEndpoint\": {\n \"type\": \"string\"\n },\n \"idTokenAlgs\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"jwksUri\": {\n \"type\": \"string\"\n },\n \"responseTypes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"revocationEndpoint\": {\n \"type\": \"string\"\n },\n \"scopes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"subjects\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tokenEndpoint\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"discoveryPollInterval\": {\n \"type\": \"string\"\n },\n \"dynamicMetadataFromClaims\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"endSessionProperties\": {\n \"properties\": {\n \"methodType\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"properties\": {\n \"accessTokenHeader\": {\n \"type\": \"string\"\n },\n \"idTokenHeader\": {\n \"type\": \"string\"\n },\n \"useBearerSchemaForAuthorization\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"identityToken\": {\n \"properties\": {\n \"claimsToHeaders\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"type\": \"boolean\"\n },\n \"claim\": {\n \"type\": \"string\"\n },\n \"header\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"issuerUrl\": {\n \"type\": \"string\"\n },\n \"jwksCacheRefreshPolicy\": {\n \"properties\": {\n \"always\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"maxIdpReqPerPollingInterval\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"never\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"logoutPath\": {\n \"type\": \"string\"\n },\n \"parseCallbackPathAsRegex\": {\n \"type\": \"boolean\"\n },\n \"scopes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"session\": {\n \"properties\": {\n \"cipherConfig\": {\n \"properties\": {\n \"keyRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"cookie\": {\n \"properties\": {\n \"allowRefreshing\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"keyPrefix\": {\n \"type\": \"string\"\n },\n \"targetDomain\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"cookieOptions\": {\n \"properties\": {\n \"domain\": {\n \"type\": \"string\"\n },\n \"httpOnly\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"maxAge\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"notSecure\": {\n \"type\": \"boolean\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"sameSite\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"failOnFetchFailure\": {\n \"type\": \"boolean\"\n },\n \"redis\": {\n \"properties\": {\n \"allowRefreshing\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"cookieName\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n },\n \"keyPrefix\": {\n \"type\": \"string\"\n },\n \"options\": {\n \"properties\": {\n \"db\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"host\": {\n \"type\": \"string\"\n },\n \"poolSize\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"socketType\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"tlsCertMountPath\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"preExpiryBuffer\": {\n \"type\": \"string\"\n },\n \"targetDomain\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"sessionIdHeaderName\": {\n \"type\": \"string\"\n },\n \"tokenEndpointQueryParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"clientId\",\n \"issuerUrl\",\n \"appUrl\",\n \"callbackPath\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"opaAuth\": {\n \"properties\": {\n \"modules\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"options\": {\n \"properties\": {\n \"fastInputConversion\": {\n \"type\": \"boolean\"\n },\n \"returnDecisionReason\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"query\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"query\"\n ],\n \"type\": \"object\"\n },\n \"opaServerAuth\": {\n \"properties\": {\n \"options\": {\n \"properties\": {\n \"fastInputConversion\": {\n \"type\": \"boolean\"\n },\n \"returnDecisionReason\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"package\": {\n \"type\": \"string\"\n },\n \"ruleName\": {\n \"type\": \"string\"\n },\n \"serverAddr\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"package\"\n ],\n \"type\": \"object\"\n },\n \"passThroughAuth\": {\n \"properties\": {\n \"config\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"failureModeAllow\": {\n \"type\": \"boolean\"\n },\n \"grpc\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"connectionTimeout\": {\n \"type\": \"string\"\n },\n \"retryPolicy\": {\n \"properties\": {\n \"numRetries\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"retryBackOff\": {\n \"properties\": {\n \"baseInterval\": {\n \"type\": \"string\"\n },\n \"maxInterval\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tlsConfig\": {\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\"\n },\n \"http\": {\n \"properties\": {\n \"connectionTimeout\": {\n \"type\": \"string\"\n },\n \"request\": {\n \"properties\": {\n \"allowedHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"headersToAdd\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"passThroughBody\": {\n \"type\": \"boolean\"\n },\n \"passThroughFilterMetadata\": {\n \"type\": \"boolean\"\n },\n \"passThroughState\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"response\": {\n \"properties\": {\n \"allowedClientHeadersOnDenied\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowedUpstreamHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowedUpstreamHeadersToOverwrite\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readStateFromResponse\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"url\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"pluginAuth\": {\n \"properties\": {\n \"config\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"exportedSymbolName\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"pluginFileName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"config\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"failOnRedirect\": {\n \"type\": \"boolean\"\n },\n \"namespacedStatuses\": {\n \"properties\": {\n \"statuses\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"configs\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Auth Config\",\n \"type\": \"object\"\n}", + "version": "enterprise.gloo.solo.io/v1" + }, + "configuration": null, + "description": "", + "displayName": "Auth Config", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz" + }, + "model": { + "category": { + "name": "Orchestration \u0026 Management" + }, + "displayName": "Gloo", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.18.0-beta18" + }, + "name": "gloo", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "API Gateway", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/Gateway.json b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/Gateway.json new file mode 100644 index 00000000000..61f018deb5a --- /dev/null +++ b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/Gateway.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "Gateway", + "schema": "{\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"bindAddress\": {\n \"type\": \"string\"\n },\n \"bindPort\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"httpGateway\": {\n \"properties\": {\n \"options\": {\n \"properties\": {\n \"buffer\": {\n \"properties\": {\n \"maxRequestBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"caching\": {\n \"properties\": {\n \"allowedVaryHeaders\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"cachingServiceRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"maxPayloadSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"timeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"connectionLimit\": {\n \"properties\": {\n \"delayBeforeClose\": {\n \"type\": \"string\"\n },\n \"maxActiveConnections\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"csrf\": {\n \"properties\": {\n \"additionalOrigins\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filterEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"shadowEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"disableExtProc\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"dlp\": {\n \"properties\": {\n \"dlpRules\": {\n \"items\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"actionType\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"customAction\": {\n \"properties\": {\n \"maskChar\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"percent\": {\n \"properties\": {\n \"value\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"regexActions\": {\n \"items\": {\n \"properties\": {\n \"regex\": {\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"keyValueAction\": {\n \"properties\": {\n \"keyToMask\": {\n \"type\": \"string\"\n },\n \"maskChar\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"percent\": {\n \"properties\": {\n \"value\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"shadow\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enabledFor\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"dynamicForwardProxy\": {\n \"properties\": {\n \"dnsCacheConfig\": {\n \"properties\": {\n \"appleDns\": {\n \"type\": \"object\"\n },\n \"caresDns\": {\n \"properties\": {\n \"dnsResolverOptions\": {\n \"properties\": {\n \"noDefaultSearchDomain\": {\n \"type\": \"boolean\"\n },\n \"useTcpForDnsLookups\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"resolvers\": {\n \"items\": {\n \"properties\": {\n \"pipe\": {\n \"properties\": {\n \"mode\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"socketAddress\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"ipv4Compat\": {\n \"type\": \"boolean\"\n },\n \"namedPort\": {\n \"type\": \"string\"\n },\n \"portValue\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resolverName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsCacheCircuitBreaker\": {\n \"properties\": {\n \"maxPendingRequests\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsFailureRefreshRate\": {\n \"properties\": {\n \"baseInterval\": {\n \"type\": \"string\"\n },\n \"maxInterval\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsLookupFamily\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"dnsQueryTimeout\": {\n \"type\": \"string\"\n },\n \"dnsRefreshRate\": {\n \"type\": \"string\"\n },\n \"hostTtl\": {\n \"type\": \"string\"\n },\n \"maxHosts\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"preresolveHostnames\": {\n \"items\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"ipv4Compat\": {\n \"type\": \"boolean\"\n },\n \"namedPort\": {\n \"type\": \"string\"\n },\n \"portValue\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resolverName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"saveUpstreamAddress\": {\n \"type\": \"boolean\"\n },\n \"sslConfig\": {\n \"properties\": {\n \"allowRenegotiation\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"alpnProtocols\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"parameters\": {\n \"properties\": {\n \"cipherSuites\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ecdhCurves\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maximumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minimumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"sds\": {\n \"properties\": {\n \"callCredentials\": {\n \"properties\": {\n \"fileCredentialSource\": {\n \"properties\": {\n \"header\": {\n \"type\": \"string\"\n },\n \"tokenFileName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"certificatesSecretName\": {\n \"type\": \"string\"\n },\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"targetUri\": {\n \"type\": \"string\"\n },\n \"validationContextName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sni\": {\n \"type\": \"string\"\n },\n \"sslFiles\": {\n \"properties\": {\n \"ocspStaple\": {\n \"type\": \"string\"\n },\n \"rootCa\": {\n \"type\": \"string\"\n },\n \"tlsCert\": {\n \"type\": \"string\"\n },\n \"tlsKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"verifySubjectAltName\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extProc\": {\n \"properties\": {\n \"allowModeOverride\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"asyncMode\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"disableClearRouteCache\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"failureModeAllow\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"filterMetadata\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"filterStage\": {\n \"properties\": {\n \"predicate\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"stage\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"forwardRules\": {\n \"properties\": {\n \"allowedHeaders\": {\n \"properties\": {\n \"patterns\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"disallowedHeaders\": {\n \"properties\": {\n \"patterns\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcService\": {\n \"properties\": {\n \"authority\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"extProcServerRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"initialMetadata\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"retryPolicy\": {\n \"properties\": {\n \"numRetries\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"retryBackOff\": {\n \"properties\": {\n \"baseInterval\": {\n \"type\": \"string\"\n },\n \"maxInterval\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"timeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"maxMessageTimeout\": {\n \"type\": \"string\"\n },\n \"messageTimeout\": {\n \"type\": \"string\"\n },\n \"metadataContextNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"mutationRules\": {\n \"properties\": {\n \"allowAllRouting\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"allowEnvoy\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"allowExpression\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disallowAll\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"disallowExpression\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disallowIsError\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"disallowSystem\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"processingMode\": {\n \"properties\": {\n \"requestBodyMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"requestHeaderMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"requestTrailerMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseBodyMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseHeaderMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseTrailerMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"requestAttributes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"responseAttributes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"statPrefix\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"typedMetadataContextNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"extauth\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"extauthzServerRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"failureModeAllow\": {\n \"type\": \"boolean\"\n },\n \"grpcService\": {\n \"properties\": {\n \"authority\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"httpService\": {\n \"properties\": {\n \"pathPrefix\": {\n \"type\": \"string\"\n },\n \"request\": {\n \"properties\": {\n \"allowedHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowedHeadersRegex\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"headersToAdd\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"response\": {\n \"properties\": {\n \"allowedClientHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowedUpstreamHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowedUpstreamHeadersToAppend\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"requestBody\": {\n \"properties\": {\n \"allowPartialMessage\": {\n \"type\": \"boolean\"\n },\n \"maxRequestBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"packAsBytes\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTimeout\": {\n \"type\": \"string\"\n },\n \"statPrefix\": {\n \"type\": \"string\"\n },\n \"statusOnError\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"transportApiVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"userIdHeader\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"properties\": {\n \"configs\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcJsonTranscoder\": {\n \"properties\": {\n \"autoMapping\": {\n \"type\": \"boolean\"\n },\n \"convertGrpcStatus\": {\n \"type\": \"boolean\"\n },\n \"ignoreUnknownQueryParameters\": {\n \"type\": \"boolean\"\n },\n \"ignoredQueryParameters\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"matchIncomingRequestRoute\": {\n \"type\": \"boolean\"\n },\n \"printOptions\": {\n \"properties\": {\n \"addWhitespace\": {\n \"type\": \"boolean\"\n },\n \"alwaysPrintEnumsAsInts\": {\n \"type\": \"boolean\"\n },\n \"alwaysPrintPrimitiveFields\": {\n \"type\": \"boolean\"\n },\n \"preserveProtoFieldNames\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"protoDescriptor\": {\n \"type\": \"string\"\n },\n \"protoDescriptorBin\": {\n \"format\": \"byte\",\n \"type\": \"string\"\n },\n \"protoDescriptorConfigMap\": {\n \"properties\": {\n \"configMapRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"services\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcWeb\": {\n \"properties\": {\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"gzip\": {\n \"properties\": {\n \"compressionLevel\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"compressionStrategy\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"contentLength\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"contentType\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"disableOnEtagHeader\": {\n \"type\": \"boolean\"\n },\n \"memoryLevel\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"removeAcceptEncodingHeader\": {\n \"type\": \"boolean\"\n },\n \"windowBits\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValidationSettings\": {\n \"properties\": {\n \"disableHttp1MethodValidation\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"healthCheck\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"httpConnectionManagerSettings\": {\n \"properties\": {\n \"acceptHttp10\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"allowChunkedLength\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"appendXForwardedPort\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"codecType\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"defaultHostForHttp10\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"delayedCloseTimeout\": {\n \"type\": \"string\"\n },\n \"drainTimeout\": {\n \"type\": \"string\"\n },\n \"enableTrailers\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"forwardClientCertDetails\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"generateRequestId\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headersWithUnderscoresAction\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"http2ProtocolOptions\": {\n \"properties\": {\n \"initialConnectionWindowSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"initialStreamWindowSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxConcurrentStreams\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"overrideStreamErrorOnInvalidHttpMessage\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"idleTimeout\": {\n \"type\": \"string\"\n },\n \"internalAddressConfig\": {\n \"properties\": {\n \"cidrRanges\": {\n \"items\": {\n \"properties\": {\n \"addressPrefix\": {\n \"type\": \"string\"\n },\n \"prefixLen\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"unixSockets\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"maxConnectionDuration\": {\n \"type\": \"string\"\n },\n \"maxHeadersCount\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxRequestHeadersKb\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxRequestsPerConnection\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxStreamDuration\": {\n \"type\": \"string\"\n },\n \"mergeSlashes\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"normalizePath\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"pathWithEscapedSlashesAction\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"preserveCaseHeaderKeyFormat\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"preserveExternalRequestId\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"properCaseHeaderKeyFormat\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"proxy100Continue\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"requestHeadersTimeout\": {\n \"type\": \"string\"\n },\n \"requestTimeout\": {\n \"type\": \"string\"\n },\n \"serverHeaderTransformation\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"serverName\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"setCurrentClientCertDetails\": {\n \"properties\": {\n \"cert\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"chain\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"dns\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"subject\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"uri\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"skipXffAppend\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"streamIdleTimeout\": {\n \"type\": \"string\"\n },\n \"stripAnyHostPort\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"tracing\": {\n \"properties\": {\n \"datadogConfig\": {\n \"properties\": {\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"collectorUpstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceName\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"environmentVariablesForTags\": {\n \"items\": {\n \"properties\": {\n \"defaultValue\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"name\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"tag\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"literalsForTags\": {\n \"items\": {\n \"properties\": {\n \"tag\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"value\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"openCensusConfig\": {\n \"properties\": {\n \"grpcAddress\": {\n \"properties\": {\n \"statPrefix\": {\n \"type\": \"string\"\n },\n \"targetUri\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"httpAddress\": {\n \"type\": \"string\"\n },\n \"incomingTraceContext\": {\n \"items\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"array\"\n },\n \"ocagentExporterEnabled\": {\n \"type\": \"boolean\"\n },\n \"outgoingTraceContext\": {\n \"items\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"array\"\n },\n \"traceConfig\": {\n \"properties\": {\n \"constantSampler\": {\n \"properties\": {\n \"decision\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"maxNumberOfAnnotations\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxNumberOfAttributes\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxNumberOfLinks\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxNumberOfMessageEvents\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"probabilitySampler\": {\n \"properties\": {\n \"samplingProbability\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimitingSampler\": {\n \"properties\": {\n \"qps\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"openTelemetryConfig\": {\n \"properties\": {\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"collectorUpstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"requestHeadersForTags\": {\n \"items\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tracePercentages\": {\n \"properties\": {\n \"clientSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"overallSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"randomSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"verbose\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"zipkinConfig\": {\n \"properties\": {\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"collectorEndpoint\": {\n \"type\": \"string\"\n },\n \"collectorEndpointVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"collectorUpstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sharedSpanContext\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"traceId128bit\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upgrades\": {\n \"items\": {\n \"properties\": {\n \"connect\": {\n \"properties\": {\n \"enabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"websocket\": {\n \"properties\": {\n \"enabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"useRemoteAddress\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"uuidRequestIdConfig\": {\n \"properties\": {\n \"packTraceReason\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"useRequestIdForTraceSampling\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"via\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"xffNumTrustedHops\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"httpLocalRatelimit\": {\n \"properties\": {\n \"defaultLimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"enableXRatelimitHeaders\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"localRateLimitPerDownstreamConnection\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"leftmostXffAddress\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"networkLocalRatelimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"proxyLatency\": {\n \"properties\": {\n \"chargeClusterStat\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"chargeListenerStat\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"emitDynamicMetadata\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"measureRequestInternally\": {\n \"type\": \"boolean\"\n },\n \"request\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"response\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ratelimitServer\": {\n \"properties\": {\n \"denyOnFail\": {\n \"type\": \"boolean\"\n },\n \"enableXRatelimitHeaders\": {\n \"type\": \"boolean\"\n },\n \"grpcService\": {\n \"properties\": {\n \"authority\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimitBeforeAuth\": {\n \"type\": \"boolean\"\n },\n \"ratelimitServerRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTimeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"router\": {\n \"properties\": {\n \"dynamicStats\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"suppressEnvoyHeaders\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"sanitizeClusterHeader\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"statefulSession\": {\n \"properties\": {\n \"cookieBased\": {\n \"properties\": {\n \"cookie\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"ttl\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"headerBased\": {\n \"properties\": {\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"strict\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"tap\": {\n \"properties\": {\n \"sinks\": {\n \"items\": {\n \"properties\": {\n \"grpcService\": {\n \"properties\": {\n \"tapServer\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"httpService\": {\n \"properties\": {\n \"tapServer\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"timeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"waf\": {\n \"properties\": {\n \"auditLogging\": {\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"location\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"configMapRuleSets\": {\n \"items\": {\n \"properties\": {\n \"configMapRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dataMapKeys\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"coreRuleSet\": {\n \"properties\": {\n \"customSettingsFile\": {\n \"type\": \"string\"\n },\n \"customSettingsString\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"customInterventionMessage\": {\n \"type\": \"string\"\n },\n \"disabled\": {\n \"type\": \"boolean\"\n },\n \"requestHeadersOnly\": {\n \"type\": \"boolean\"\n },\n \"responseHeadersOnly\": {\n \"type\": \"boolean\"\n },\n \"ruleSets\": {\n \"items\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n },\n \"files\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ruleStr\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"wasm\": {\n \"properties\": {\n \"filters\": {\n \"items\": {\n \"properties\": {\n \"config\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"failOpen\": {\n \"type\": \"boolean\"\n },\n \"filePath\": {\n \"type\": \"string\"\n },\n \"filterStage\": {\n \"properties\": {\n \"predicate\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"stage\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"rootId\": {\n \"type\": \"string\"\n },\n \"vmType\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"virtualServiceExpressions\": {\n \"properties\": {\n \"expressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"virtualServiceNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"virtualServiceSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"virtualServices\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"hybridGateway\": {\n \"properties\": {\n \"delegatedHttpGateways\": {\n \"properties\": {\n \"httpConnectionManagerSettings\": {\n \"properties\": {\n \"acceptHttp10\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"allowChunkedLength\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"appendXForwardedPort\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"codecType\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"defaultHostForHttp10\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"delayedCloseTimeout\": {\n \"type\": \"string\"\n },\n \"drainTimeout\": {\n \"type\": \"string\"\n },\n \"enableTrailers\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"forwardClientCertDetails\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"generateRequestId\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headersWithUnderscoresAction\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"http2ProtocolOptions\": {\n \"properties\": {\n \"initialConnectionWindowSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"initialStreamWindowSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxConcurrentStreams\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"overrideStreamErrorOnInvalidHttpMessage\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"idleTimeout\": {\n \"type\": \"string\"\n },\n \"internalAddressConfig\": {\n \"properties\": {\n \"cidrRanges\": {\n \"items\": {\n \"properties\": {\n \"addressPrefix\": {\n \"type\": \"string\"\n },\n \"prefixLen\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"unixSockets\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"maxConnectionDuration\": {\n \"type\": \"string\"\n },\n \"maxHeadersCount\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxRequestHeadersKb\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxRequestsPerConnection\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxStreamDuration\": {\n \"type\": \"string\"\n },\n \"mergeSlashes\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"normalizePath\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"pathWithEscapedSlashesAction\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"preserveCaseHeaderKeyFormat\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"preserveExternalRequestId\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"properCaseHeaderKeyFormat\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"proxy100Continue\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"requestHeadersTimeout\": {\n \"type\": \"string\"\n },\n \"requestTimeout\": {\n \"type\": \"string\"\n },\n \"serverHeaderTransformation\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"serverName\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"setCurrentClientCertDetails\": {\n \"properties\": {\n \"cert\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"chain\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"dns\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"subject\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"uri\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"skipXffAppend\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"streamIdleTimeout\": {\n \"type\": \"string\"\n },\n \"stripAnyHostPort\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"tracing\": {\n \"properties\": {\n \"datadogConfig\": {\n \"properties\": {\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"collectorUpstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceName\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"environmentVariablesForTags\": {\n \"items\": {\n \"properties\": {\n \"defaultValue\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"name\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"tag\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"literalsForTags\": {\n \"items\": {\n \"properties\": {\n \"tag\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"value\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"openCensusConfig\": {\n \"properties\": {\n \"grpcAddress\": {\n \"properties\": {\n \"statPrefix\": {\n \"type\": \"string\"\n },\n \"targetUri\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"httpAddress\": {\n \"type\": \"string\"\n },\n \"incomingTraceContext\": {\n \"items\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"array\"\n },\n \"ocagentExporterEnabled\": {\n \"type\": \"boolean\"\n },\n \"outgoingTraceContext\": {\n \"items\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"array\"\n },\n \"traceConfig\": {\n \"properties\": {\n \"constantSampler\": {\n \"properties\": {\n \"decision\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"maxNumberOfAnnotations\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxNumberOfAttributes\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxNumberOfLinks\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxNumberOfMessageEvents\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"probabilitySampler\": {\n \"properties\": {\n \"samplingProbability\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimitingSampler\": {\n \"properties\": {\n \"qps\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"openTelemetryConfig\": {\n \"properties\": {\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"collectorUpstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"requestHeadersForTags\": {\n \"items\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tracePercentages\": {\n \"properties\": {\n \"clientSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"overallSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"randomSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"verbose\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"zipkinConfig\": {\n \"properties\": {\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"collectorEndpoint\": {\n \"type\": \"string\"\n },\n \"collectorEndpointVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"collectorUpstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sharedSpanContext\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"traceId128bit\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upgrades\": {\n \"items\": {\n \"properties\": {\n \"connect\": {\n \"properties\": {\n \"enabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"websocket\": {\n \"properties\": {\n \"enabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"useRemoteAddress\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"uuidRequestIdConfig\": {\n \"properties\": {\n \"packTraceReason\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"useRequestIdForTraceSampling\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"via\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"xffNumTrustedHops\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"preventChildOverrides\": {\n \"type\": \"boolean\"\n },\n \"ref\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"properties\": {\n \"expressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"sslConfig\": {\n \"properties\": {\n \"alpnProtocols\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"disableTlsSessionResumption\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"ocspStaplePolicy\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"oneWayTls\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"parameters\": {\n \"properties\": {\n \"cipherSuites\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ecdhCurves\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maximumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minimumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"sds\": {\n \"properties\": {\n \"callCredentials\": {\n \"properties\": {\n \"fileCredentialSource\": {\n \"properties\": {\n \"header\": {\n \"type\": \"string\"\n },\n \"tokenFileName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"certificatesSecretName\": {\n \"type\": \"string\"\n },\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"targetUri\": {\n \"type\": \"string\"\n },\n \"validationContextName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sniDomains\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"sslFiles\": {\n \"properties\": {\n \"ocspStaple\": {\n \"type\": \"string\"\n },\n \"rootCa\": {\n \"type\": \"string\"\n },\n \"tlsCert\": {\n \"type\": \"string\"\n },\n \"tlsKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"transportSocketConnectTimeout\": {\n \"type\": \"string\"\n },\n \"verifySubjectAltName\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"delegatedTcpGateways\": {\n \"properties\": {\n \"ref\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"properties\": {\n \"expressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"matchedGateways\": {\n \"items\": {\n \"properties\": {\n \"httpGateway\": {\n \"properties\": {\n \"options\": {\n \"properties\": {\n \"buffer\": {\n \"properties\": {\n \"maxRequestBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"caching\": {\n \"properties\": {\n \"allowedVaryHeaders\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"cachingServiceRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"maxPayloadSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"timeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"connectionLimit\": {\n \"properties\": {\n \"delayBeforeClose\": {\n \"type\": \"string\"\n },\n \"maxActiveConnections\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"csrf\": {\n \"properties\": {\n \"additionalOrigins\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filterEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"shadowEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"disableExtProc\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"dlp\": {\n \"properties\": {\n \"dlpRules\": {\n \"items\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"actionType\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"customAction\": {\n \"properties\": {\n \"maskChar\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"percent\": {\n \"properties\": {\n \"value\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"regexActions\": {\n \"items\": {\n \"properties\": {\n \"regex\": {\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"keyValueAction\": {\n \"properties\": {\n \"keyToMask\": {\n \"type\": \"string\"\n },\n \"maskChar\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"percent\": {\n \"properties\": {\n \"value\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"shadow\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enabledFor\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"dynamicForwardProxy\": {\n \"properties\": {\n \"dnsCacheConfig\": {\n \"properties\": {\n \"appleDns\": {\n \"type\": \"object\"\n },\n \"caresDns\": {\n \"properties\": {\n \"dnsResolverOptions\": {\n \"properties\": {\n \"noDefaultSearchDomain\": {\n \"type\": \"boolean\"\n },\n \"useTcpForDnsLookups\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"resolvers\": {\n \"items\": {\n \"properties\": {\n \"pipe\": {\n \"properties\": {\n \"mode\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"socketAddress\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"ipv4Compat\": {\n \"type\": \"boolean\"\n },\n \"namedPort\": {\n \"type\": \"string\"\n },\n \"portValue\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resolverName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsCacheCircuitBreaker\": {\n \"properties\": {\n \"maxPendingRequests\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsFailureRefreshRate\": {\n \"properties\": {\n \"baseInterval\": {\n \"type\": \"string\"\n },\n \"maxInterval\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsLookupFamily\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"dnsQueryTimeout\": {\n \"type\": \"string\"\n },\n \"dnsRefreshRate\": {\n \"type\": \"string\"\n },\n \"hostTtl\": {\n \"type\": \"string\"\n },\n \"maxHosts\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"preresolveHostnames\": {\n \"items\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"ipv4Compat\": {\n \"type\": \"boolean\"\n },\n \"namedPort\": {\n \"type\": \"string\"\n },\n \"portValue\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resolverName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"saveUpstreamAddress\": {\n \"type\": \"boolean\"\n },\n \"sslConfig\": {\n \"properties\": {\n \"allowRenegotiation\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"alpnProtocols\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"parameters\": {\n \"properties\": {\n \"cipherSuites\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ecdhCurves\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maximumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minimumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"sds\": {\n \"properties\": {\n \"callCredentials\": {\n \"properties\": {\n \"fileCredentialSource\": {\n \"properties\": {\n \"header\": {\n \"type\": \"string\"\n },\n \"tokenFileName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"certificatesSecretName\": {\n \"type\": \"string\"\n },\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"targetUri\": {\n \"type\": \"string\"\n },\n \"validationContextName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sni\": {\n \"type\": \"string\"\n },\n \"sslFiles\": {\n \"properties\": {\n \"ocspStaple\": {\n \"type\": \"string\"\n },\n \"rootCa\": {\n \"type\": \"string\"\n },\n \"tlsCert\": {\n \"type\": \"string\"\n },\n \"tlsKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"verifySubjectAltName\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extProc\": {\n \"properties\": {\n \"allowModeOverride\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"asyncMode\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"disableClearRouteCache\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"failureModeAllow\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"filterMetadata\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"filterStage\": {\n \"properties\": {\n \"predicate\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"stage\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"forwardRules\": {\n \"properties\": {\n \"allowedHeaders\": {\n \"properties\": {\n \"patterns\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"disallowedHeaders\": {\n \"properties\": {\n \"patterns\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcService\": {\n \"properties\": {\n \"authority\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"extProcServerRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"initialMetadata\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"retryPolicy\": {\n \"properties\": {\n \"numRetries\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"retryBackOff\": {\n \"properties\": {\n \"baseInterval\": {\n \"type\": \"string\"\n },\n \"maxInterval\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"timeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"maxMessageTimeout\": {\n \"type\": \"string\"\n },\n \"messageTimeout\": {\n \"type\": \"string\"\n },\n \"metadataContextNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"mutationRules\": {\n \"properties\": {\n \"allowAllRouting\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"allowEnvoy\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"allowExpression\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disallowAll\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"disallowExpression\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disallowIsError\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"disallowSystem\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"processingMode\": {\n \"properties\": {\n \"requestBodyMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"requestHeaderMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"requestTrailerMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseBodyMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseHeaderMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseTrailerMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"requestAttributes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"responseAttributes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"statPrefix\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"typedMetadataContextNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"extauth\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"extauthzServerRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"failureModeAllow\": {\n \"type\": \"boolean\"\n },\n \"grpcService\": {\n \"properties\": {\n \"authority\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"httpService\": {\n \"properties\": {\n \"pathPrefix\": {\n \"type\": \"string\"\n },\n \"request\": {\n \"properties\": {\n \"allowedHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowedHeadersRegex\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"headersToAdd\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"response\": {\n \"properties\": {\n \"allowedClientHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowedUpstreamHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowedUpstreamHeadersToAppend\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"requestBody\": {\n \"properties\": {\n \"allowPartialMessage\": {\n \"type\": \"boolean\"\n },\n \"maxRequestBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"packAsBytes\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTimeout\": {\n \"type\": \"string\"\n },\n \"statPrefix\": {\n \"type\": \"string\"\n },\n \"statusOnError\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"transportApiVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"userIdHeader\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"properties\": {\n \"configs\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcJsonTranscoder\": {\n \"properties\": {\n \"autoMapping\": {\n \"type\": \"boolean\"\n },\n \"convertGrpcStatus\": {\n \"type\": \"boolean\"\n },\n \"ignoreUnknownQueryParameters\": {\n \"type\": \"boolean\"\n },\n \"ignoredQueryParameters\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"matchIncomingRequestRoute\": {\n \"type\": \"boolean\"\n },\n \"printOptions\": {\n \"properties\": {\n \"addWhitespace\": {\n \"type\": \"boolean\"\n },\n \"alwaysPrintEnumsAsInts\": {\n \"type\": \"boolean\"\n },\n \"alwaysPrintPrimitiveFields\": {\n \"type\": \"boolean\"\n },\n \"preserveProtoFieldNames\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"protoDescriptor\": {\n \"type\": \"string\"\n },\n \"protoDescriptorBin\": {\n \"format\": \"byte\",\n \"type\": \"string\"\n },\n \"protoDescriptorConfigMap\": {\n \"properties\": {\n \"configMapRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"services\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcWeb\": {\n \"properties\": {\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"gzip\": {\n \"properties\": {\n \"compressionLevel\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"compressionStrategy\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"contentLength\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"contentType\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"disableOnEtagHeader\": {\n \"type\": \"boolean\"\n },\n \"memoryLevel\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"removeAcceptEncodingHeader\": {\n \"type\": \"boolean\"\n },\n \"windowBits\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValidationSettings\": {\n \"properties\": {\n \"disableHttp1MethodValidation\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"healthCheck\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"httpConnectionManagerSettings\": {\n \"properties\": {\n \"acceptHttp10\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"allowChunkedLength\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"appendXForwardedPort\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"codecType\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"defaultHostForHttp10\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"delayedCloseTimeout\": {\n \"type\": \"string\"\n },\n \"drainTimeout\": {\n \"type\": \"string\"\n },\n \"enableTrailers\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"forwardClientCertDetails\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"generateRequestId\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headersWithUnderscoresAction\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"http2ProtocolOptions\": {\n \"properties\": {\n \"initialConnectionWindowSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"initialStreamWindowSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxConcurrentStreams\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"overrideStreamErrorOnInvalidHttpMessage\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"idleTimeout\": {\n \"type\": \"string\"\n },\n \"internalAddressConfig\": {\n \"properties\": {\n \"cidrRanges\": {\n \"items\": {\n \"properties\": {\n \"addressPrefix\": {\n \"type\": \"string\"\n },\n \"prefixLen\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"unixSockets\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"maxConnectionDuration\": {\n \"type\": \"string\"\n },\n \"maxHeadersCount\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxRequestHeadersKb\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxRequestsPerConnection\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxStreamDuration\": {\n \"type\": \"string\"\n },\n \"mergeSlashes\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"normalizePath\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"pathWithEscapedSlashesAction\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"preserveCaseHeaderKeyFormat\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"preserveExternalRequestId\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"properCaseHeaderKeyFormat\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"proxy100Continue\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"requestHeadersTimeout\": {\n \"type\": \"string\"\n },\n \"requestTimeout\": {\n \"type\": \"string\"\n },\n \"serverHeaderTransformation\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"serverName\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"setCurrentClientCertDetails\": {\n \"properties\": {\n \"cert\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"chain\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"dns\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"subject\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"uri\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"skipXffAppend\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"streamIdleTimeout\": {\n \"type\": \"string\"\n },\n \"stripAnyHostPort\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"tracing\": {\n \"properties\": {\n \"datadogConfig\": {\n \"properties\": {\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"collectorUpstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceName\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"environmentVariablesForTags\": {\n \"items\": {\n \"properties\": {\n \"defaultValue\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"name\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"tag\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"literalsForTags\": {\n \"items\": {\n \"properties\": {\n \"tag\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"value\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"openCensusConfig\": {\n \"properties\": {\n \"grpcAddress\": {\n \"properties\": {\n \"statPrefix\": {\n \"type\": \"string\"\n },\n \"targetUri\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"httpAddress\": {\n \"type\": \"string\"\n },\n \"incomingTraceContext\": {\n \"items\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"array\"\n },\n \"ocagentExporterEnabled\": {\n \"type\": \"boolean\"\n },\n \"outgoingTraceContext\": {\n \"items\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"array\"\n },\n \"traceConfig\": {\n \"properties\": {\n \"constantSampler\": {\n \"properties\": {\n \"decision\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"maxNumberOfAnnotations\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxNumberOfAttributes\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxNumberOfLinks\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxNumberOfMessageEvents\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"probabilitySampler\": {\n \"properties\": {\n \"samplingProbability\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimitingSampler\": {\n \"properties\": {\n \"qps\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"openTelemetryConfig\": {\n \"properties\": {\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"collectorUpstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"requestHeadersForTags\": {\n \"items\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tracePercentages\": {\n \"properties\": {\n \"clientSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"overallSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"randomSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"verbose\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"zipkinConfig\": {\n \"properties\": {\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"collectorEndpoint\": {\n \"type\": \"string\"\n },\n \"collectorEndpointVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"collectorUpstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sharedSpanContext\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"traceId128bit\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upgrades\": {\n \"items\": {\n \"properties\": {\n \"connect\": {\n \"properties\": {\n \"enabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"websocket\": {\n \"properties\": {\n \"enabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"useRemoteAddress\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"uuidRequestIdConfig\": {\n \"properties\": {\n \"packTraceReason\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"useRequestIdForTraceSampling\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"via\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"xffNumTrustedHops\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"httpLocalRatelimit\": {\n \"properties\": {\n \"defaultLimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"enableXRatelimitHeaders\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"localRateLimitPerDownstreamConnection\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"leftmostXffAddress\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"networkLocalRatelimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"proxyLatency\": {\n \"properties\": {\n \"chargeClusterStat\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"chargeListenerStat\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"emitDynamicMetadata\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"measureRequestInternally\": {\n \"type\": \"boolean\"\n },\n \"request\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"response\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ratelimitServer\": {\n \"properties\": {\n \"denyOnFail\": {\n \"type\": \"boolean\"\n },\n \"enableXRatelimitHeaders\": {\n \"type\": \"boolean\"\n },\n \"grpcService\": {\n \"properties\": {\n \"authority\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimitBeforeAuth\": {\n \"type\": \"boolean\"\n },\n \"ratelimitServerRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTimeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"router\": {\n \"properties\": {\n \"dynamicStats\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"suppressEnvoyHeaders\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"sanitizeClusterHeader\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"statefulSession\": {\n \"properties\": {\n \"cookieBased\": {\n \"properties\": {\n \"cookie\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"ttl\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"headerBased\": {\n \"properties\": {\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"strict\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"tap\": {\n \"properties\": {\n \"sinks\": {\n \"items\": {\n \"properties\": {\n \"grpcService\": {\n \"properties\": {\n \"tapServer\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"httpService\": {\n \"properties\": {\n \"tapServer\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"timeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"waf\": {\n \"properties\": {\n \"auditLogging\": {\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"location\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"configMapRuleSets\": {\n \"items\": {\n \"properties\": {\n \"configMapRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dataMapKeys\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"coreRuleSet\": {\n \"properties\": {\n \"customSettingsFile\": {\n \"type\": \"string\"\n },\n \"customSettingsString\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"customInterventionMessage\": {\n \"type\": \"string\"\n },\n \"disabled\": {\n \"type\": \"boolean\"\n },\n \"requestHeadersOnly\": {\n \"type\": \"boolean\"\n },\n \"responseHeadersOnly\": {\n \"type\": \"boolean\"\n },\n \"ruleSets\": {\n \"items\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n },\n \"files\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ruleStr\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"wasm\": {\n \"properties\": {\n \"filters\": {\n \"items\": {\n \"properties\": {\n \"config\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"failOpen\": {\n \"type\": \"boolean\"\n },\n \"filePath\": {\n \"type\": \"string\"\n },\n \"filterStage\": {\n \"properties\": {\n \"predicate\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"stage\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"rootId\": {\n \"type\": \"string\"\n },\n \"vmType\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"virtualServiceExpressions\": {\n \"properties\": {\n \"expressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"virtualServiceNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"virtualServiceSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"virtualServices\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"matcher\": {\n \"properties\": {\n \"passthroughCipherSuites\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"sourcePrefixRanges\": {\n \"items\": {\n \"properties\": {\n \"addressPrefix\": {\n \"type\": \"string\"\n },\n \"prefixLen\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sslConfig\": {\n \"properties\": {\n \"alpnProtocols\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"disableTlsSessionResumption\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"ocspStaplePolicy\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"oneWayTls\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"parameters\": {\n \"properties\": {\n \"cipherSuites\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ecdhCurves\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maximumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minimumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"sds\": {\n \"properties\": {\n \"callCredentials\": {\n \"properties\": {\n \"fileCredentialSource\": {\n \"properties\": {\n \"header\": {\n \"type\": \"string\"\n },\n \"tokenFileName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"certificatesSecretName\": {\n \"type\": \"string\"\n },\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"targetUri\": {\n \"type\": \"string\"\n },\n \"validationContextName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sniDomains\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"sslFiles\": {\n \"properties\": {\n \"ocspStaple\": {\n \"type\": \"string\"\n },\n \"rootCa\": {\n \"type\": \"string\"\n },\n \"tlsCert\": {\n \"type\": \"string\"\n },\n \"tlsKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"transportSocketConnectTimeout\": {\n \"type\": \"string\"\n },\n \"verifySubjectAltName\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tcpGateway\": {\n \"properties\": {\n \"options\": {\n \"properties\": {\n \"connectionLimit\": {\n \"properties\": {\n \"delayBeforeClose\": {\n \"type\": \"string\"\n },\n \"maxActiveConnections\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"localRatelimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"tcpProxySettings\": {\n \"properties\": {\n \"accessLogFlushInterval\": {\n \"type\": \"string\"\n },\n \"idleTimeout\": {\n \"type\": \"string\"\n },\n \"maxConnectAttempts\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"tunnelingConfig\": {\n \"properties\": {\n \"headersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"hostname\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tcpHosts\": {\n \"items\": {\n \"properties\": {\n \"destination\": {\n \"properties\": {\n \"forwardSniClusterName\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"multi\": {\n \"properties\": {\n \"destinations\": {\n \"items\": {\n \"properties\": {\n \"destination\": {\n \"properties\": {\n \"consul\": {\n \"properties\": {\n \"dataCenters\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"serviceName\": {\n \"type\": \"string\"\n },\n \"tags\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"destinationSpec\": {\n \"properties\": {\n \"aws\": {\n \"properties\": {\n \"invocationStyle\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"logicalName\": {\n \"type\": \"string\"\n },\n \"requestTransformation\": {\n \"type\": \"boolean\"\n },\n \"responseTransformation\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsAlb\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsApiGateway\": {\n \"type\": \"boolean\"\n },\n \"wrapAsApiGateway\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"azure\": {\n \"properties\": {\n \"functionName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"grpc\": {\n \"properties\": {\n \"function\": {\n \"type\": \"string\"\n },\n \"package\": {\n \"type\": \"string\"\n },\n \"parameters\": {\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"rest\": {\n \"properties\": {\n \"functionName\": {\n \"type\": \"string\"\n },\n \"parameters\": {\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"kube\": {\n \"properties\": {\n \"port\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"ref\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"subset\": {\n \"properties\": {\n \"values\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upstream\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"options\": {\n \"properties\": {\n \"bufferPerRoute\": {\n \"properties\": {\n \"buffer\": {\n \"properties\": {\n \"maxRequestBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"disabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"csrf\": {\n \"properties\": {\n \"additionalOrigins\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filterEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"shadowEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extauth\": {\n \"properties\": {\n \"configRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"customAuth\": {\n \"properties\": {\n \"contextExtensions\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"properties\": {\n \"configs\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"headerManipulation\": {\n \"properties\": {\n \"requestHeadersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requestHeadersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"responseHeadersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseHeadersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"stagedTransformations\": {\n \"properties\": {\n \"early\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"inheritTransformation\": {\n \"type\": \"boolean\"\n },\n \"logRequestResponseInfo\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"postRouting\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"regular\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"transformations\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"weight\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"single\": {\n \"properties\": {\n \"consul\": {\n \"properties\": {\n \"dataCenters\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"serviceName\": {\n \"type\": \"string\"\n },\n \"tags\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"destinationSpec\": {\n \"properties\": {\n \"aws\": {\n \"properties\": {\n \"invocationStyle\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"logicalName\": {\n \"type\": \"string\"\n },\n \"requestTransformation\": {\n \"type\": \"boolean\"\n },\n \"responseTransformation\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsAlb\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsApiGateway\": {\n \"type\": \"boolean\"\n },\n \"wrapAsApiGateway\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"azure\": {\n \"properties\": {\n \"functionName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"grpc\": {\n \"properties\": {\n \"function\": {\n \"type\": \"string\"\n },\n \"package\": {\n \"type\": \"string\"\n },\n \"parameters\": {\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"rest\": {\n \"properties\": {\n \"functionName\": {\n \"type\": \"string\"\n },\n \"parameters\": {\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"kube\": {\n \"properties\": {\n \"port\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"ref\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"subset\": {\n \"properties\": {\n \"values\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upstream\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upstreamGroup\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"sslConfig\": {\n \"properties\": {\n \"alpnProtocols\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"disableTlsSessionResumption\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"ocspStaplePolicy\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"oneWayTls\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"parameters\": {\n \"properties\": {\n \"cipherSuites\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ecdhCurves\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maximumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minimumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"sds\": {\n \"properties\": {\n \"callCredentials\": {\n \"properties\": {\n \"fileCredentialSource\": {\n \"properties\": {\n \"header\": {\n \"type\": \"string\"\n },\n \"tokenFileName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"certificatesSecretName\": {\n \"type\": \"string\"\n },\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"targetUri\": {\n \"type\": \"string\"\n },\n \"validationContextName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sniDomains\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"sslFiles\": {\n \"properties\": {\n \"ocspStaple\": {\n \"type\": \"string\"\n },\n \"rootCa\": {\n \"type\": \"string\"\n },\n \"tlsCert\": {\n \"type\": \"string\"\n },\n \"tlsKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"transportSocketConnectTimeout\": {\n \"type\": \"string\"\n },\n \"verifySubjectAltName\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"namespacedStatuses\": {\n \"properties\": {\n \"statuses\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"options\": {\n \"properties\": {\n \"accessLoggingService\": {\n \"properties\": {\n \"accessLog\": {\n \"items\": {\n \"properties\": {\n \"fileSink\": {\n \"properties\": {\n \"jsonFormat\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"stringFormat\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"filter\": {\n \"properties\": {\n \"andFilter\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"durationFilter\": {\n \"properties\": {\n \"comparison\": {\n \"properties\": {\n \"op\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"value\": {\n \"properties\": {\n \"defaultValue\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcStatusFilter\": {\n \"properties\": {\n \"exclude\": {\n \"type\": \"boolean\"\n },\n \"statuses\": {\n \"items\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"headerFilter\": {\n \"properties\": {\n \"header\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"safeRegexMatch\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"notHealthCheckFilter\": {\n \"type\": \"object\"\n },\n \"orFilter\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"responseFlagFilter\": {\n \"properties\": {\n \"flags\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeFilter\": {\n \"properties\": {\n \"percentSampled\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n },\n \"useIndependentRandomness\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"statusCodeFilter\": {\n \"properties\": {\n \"comparison\": {\n \"properties\": {\n \"op\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"value\": {\n \"properties\": {\n \"defaultValue\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"traceableFilter\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcService\": {\n \"properties\": {\n \"additionalRequestHeadersToLog\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalResponseHeadersToLog\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalResponseTrailersToLog\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"logName\": {\n \"type\": \"string\"\n },\n \"staticClusterName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"connectionBalanceConfig\": {\n \"properties\": {\n \"exactBalance\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"properties\": {\n \"configs\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"listenerAccessLoggingService\": {\n \"properties\": {\n \"accessLog\": {\n \"items\": {\n \"properties\": {\n \"fileSink\": {\n \"properties\": {\n \"jsonFormat\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"stringFormat\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"filter\": {\n \"properties\": {\n \"andFilter\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"durationFilter\": {\n \"properties\": {\n \"comparison\": {\n \"properties\": {\n \"op\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"value\": {\n \"properties\": {\n \"defaultValue\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcStatusFilter\": {\n \"properties\": {\n \"exclude\": {\n \"type\": \"boolean\"\n },\n \"statuses\": {\n \"items\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"headerFilter\": {\n \"properties\": {\n \"header\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"safeRegexMatch\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"notHealthCheckFilter\": {\n \"type\": \"object\"\n },\n \"orFilter\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"responseFlagFilter\": {\n \"properties\": {\n \"flags\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeFilter\": {\n \"properties\": {\n \"percentSampled\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n },\n \"useIndependentRandomness\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"statusCodeFilter\": {\n \"properties\": {\n \"comparison\": {\n \"properties\": {\n \"op\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"value\": {\n \"properties\": {\n \"defaultValue\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"traceableFilter\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcService\": {\n \"properties\": {\n \"additionalRequestHeadersToLog\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalResponseHeadersToLog\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalResponseTrailersToLog\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"logName\": {\n \"type\": \"string\"\n },\n \"staticClusterName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"perConnectionBufferLimitBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"proxyProtocol\": {\n \"properties\": {\n \"allowRequestsWithoutProxyProtocol\": {\n \"type\": \"boolean\"\n },\n \"rules\": {\n \"items\": {\n \"properties\": {\n \"onTlvPresent\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tlvType\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"socketOptions\": {\n \"items\": {\n \"properties\": {\n \"bufValue\": {\n \"format\": \"byte\",\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"intValue\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"level\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"name\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"state\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"proxyNames\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"routeOptions\": {\n \"properties\": {\n \"maxDirectResponseBodySizeBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"mostSpecificHeaderMutationsWins\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"ssl\": {\n \"type\": \"boolean\"\n },\n \"tcpGateway\": {\n \"properties\": {\n \"options\": {\n \"properties\": {\n \"connectionLimit\": {\n \"properties\": {\n \"delayBeforeClose\": {\n \"type\": \"string\"\n },\n \"maxActiveConnections\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"localRatelimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"tcpProxySettings\": {\n \"properties\": {\n \"accessLogFlushInterval\": {\n \"type\": \"string\"\n },\n \"idleTimeout\": {\n \"type\": \"string\"\n },\n \"maxConnectAttempts\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"tunnelingConfig\": {\n \"properties\": {\n \"headersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"hostname\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tcpHosts\": {\n \"items\": {\n \"properties\": {\n \"destination\": {\n \"properties\": {\n \"forwardSniClusterName\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"multi\": {\n \"properties\": {\n \"destinations\": {\n \"items\": {\n \"properties\": {\n \"destination\": {\n \"properties\": {\n \"consul\": {\n \"properties\": {\n \"dataCenters\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"serviceName\": {\n \"type\": \"string\"\n },\n \"tags\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"destinationSpec\": {\n \"properties\": {\n \"aws\": {\n \"properties\": {\n \"invocationStyle\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"logicalName\": {\n \"type\": \"string\"\n },\n \"requestTransformation\": {\n \"type\": \"boolean\"\n },\n \"responseTransformation\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsAlb\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsApiGateway\": {\n \"type\": \"boolean\"\n },\n \"wrapAsApiGateway\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"azure\": {\n \"properties\": {\n \"functionName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"grpc\": {\n \"properties\": {\n \"function\": {\n \"type\": \"string\"\n },\n \"package\": {\n \"type\": \"string\"\n },\n \"parameters\": {\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"rest\": {\n \"properties\": {\n \"functionName\": {\n \"type\": \"string\"\n },\n \"parameters\": {\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"kube\": {\n \"properties\": {\n \"port\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"ref\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"subset\": {\n \"properties\": {\n \"values\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upstream\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"options\": {\n \"properties\": {\n \"bufferPerRoute\": {\n \"properties\": {\n \"buffer\": {\n \"properties\": {\n \"maxRequestBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"disabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"csrf\": {\n \"properties\": {\n \"additionalOrigins\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filterEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"shadowEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extauth\": {\n \"properties\": {\n \"configRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"customAuth\": {\n \"properties\": {\n \"contextExtensions\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"properties\": {\n \"configs\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"headerManipulation\": {\n \"properties\": {\n \"requestHeadersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requestHeadersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"responseHeadersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseHeadersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"stagedTransformations\": {\n \"properties\": {\n \"early\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"inheritTransformation\": {\n \"type\": \"boolean\"\n },\n \"logRequestResponseInfo\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"postRouting\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"regular\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"transformations\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"weight\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"single\": {\n \"properties\": {\n \"consul\": {\n \"properties\": {\n \"dataCenters\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"serviceName\": {\n \"type\": \"string\"\n },\n \"tags\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"destinationSpec\": {\n \"properties\": {\n \"aws\": {\n \"properties\": {\n \"invocationStyle\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"logicalName\": {\n \"type\": \"string\"\n },\n \"requestTransformation\": {\n \"type\": \"boolean\"\n },\n \"responseTransformation\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsAlb\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsApiGateway\": {\n \"type\": \"boolean\"\n },\n \"wrapAsApiGateway\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"azure\": {\n \"properties\": {\n \"functionName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"grpc\": {\n \"properties\": {\n \"function\": {\n \"type\": \"string\"\n },\n \"package\": {\n \"type\": \"string\"\n },\n \"parameters\": {\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"rest\": {\n \"properties\": {\n \"functionName\": {\n \"type\": \"string\"\n },\n \"parameters\": {\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"kube\": {\n \"properties\": {\n \"port\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"ref\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"subset\": {\n \"properties\": {\n \"values\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upstream\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upstreamGroup\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"sslConfig\": {\n \"properties\": {\n \"alpnProtocols\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"disableTlsSessionResumption\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"ocspStaplePolicy\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"oneWayTls\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"parameters\": {\n \"properties\": {\n \"cipherSuites\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ecdhCurves\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maximumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minimumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"sds\": {\n \"properties\": {\n \"callCredentials\": {\n \"properties\": {\n \"fileCredentialSource\": {\n \"properties\": {\n \"header\": {\n \"type\": \"string\"\n },\n \"tokenFileName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"certificatesSecretName\": {\n \"type\": \"string\"\n },\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"targetUri\": {\n \"type\": \"string\"\n },\n \"validationContextName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sniDomains\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"sslFiles\": {\n \"properties\": {\n \"ocspStaple\": {\n \"type\": \"string\"\n },\n \"rootCa\": {\n \"type\": \"string\"\n },\n \"tlsCert\": {\n \"type\": \"string\"\n },\n \"tlsKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"transportSocketConnectTimeout\": {\n \"type\": \"string\"\n },\n \"verifySubjectAltName\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"useProxyProto\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Gateway\",\n \"type\": \"object\"\n}", + "version": "gateway.solo.io/v1" + }, + "configuration": null, + "description": "", + "displayName": "Gateway", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz" + }, + "model": { + "category": { + "name": "Orchestration \u0026 Management" + }, + "displayName": "Gloo", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.18.0-beta18" + }, + "name": "gloo", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "API Gateway", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/GatewayParameters.json b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/GatewayParameters.json new file mode 100644 index 00000000000..db4108e24ec --- /dev/null +++ b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/GatewayParameters.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "GatewayParameters", + "schema": "{\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"kube\": {\n \"properties\": {\n \"aiExtension\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"env\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"properties\": {\n \"configMapKeyRef\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"properties\": {\n \"digest\": {\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"type\": \"string\"\n },\n \"registry\": {\n \"type\": \"string\"\n },\n \"repository\": {\n \"type\": \"string\"\n },\n \"tag\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"ports\": {\n \"items\": {\n \"properties\": {\n \"containerPort\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"resources\": {\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"properties\": {\n \"add\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"deployment\": {\n \"properties\": {\n \"replicas\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"envoyContainer\": {\n \"properties\": {\n \"bootstrap\": {\n \"properties\": {\n \"componentLogLevels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"logLevel\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"image\": {\n \"properties\": {\n \"digest\": {\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"type\": \"string\"\n },\n \"registry\": {\n \"type\": \"string\"\n },\n \"repository\": {\n \"type\": \"string\"\n },\n \"tag\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"properties\": {\n \"add\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"istio\": {\n \"properties\": {\n \"customSidecars\": {\n \"items\": {\n \"properties\": {\n \"args\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"properties\": {\n \"configMapKeyRef\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"items\": {\n \"properties\": {\n \"configMapRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"properties\": {\n \"postStart\": {\n \"properties\": {\n \"exec\": {\n \"properties\": {\n \"command\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"properties\": {\n \"seconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"properties\": {\n \"exec\": {\n \"properties\": {\n \"command\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"properties\": {\n \"seconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"properties\": {\n \"exec\": {\n \"properties\": {\n \"command\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"properties\": {\n \"port\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"ports\": {\n \"items\": {\n \"properties\": {\n \"containerPort\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"properties\": {\n \"exec\": {\n \"properties\": {\n \"command\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"properties\": {\n \"port\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"items\": {\n \"properties\": {\n \"resourceName\": {\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"properties\": {\n \"add\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"properties\": {\n \"exec\": {\n \"properties\": {\n \"command\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"properties\": {\n \"port\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"type\": \"string\"\n },\n \"tty\": {\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"items\": {\n \"properties\": {\n \"devicePath\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"items\": {\n \"properties\": {\n \"mountPath\": {\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"istioProxyContainer\": {\n \"properties\": {\n \"image\": {\n \"properties\": {\n \"digest\": {\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"type\": \"string\"\n },\n \"registry\": {\n \"type\": \"string\"\n },\n \"repository\": {\n \"type\": \"string\"\n },\n \"tag\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"istioDiscoveryAddress\": {\n \"type\": \"string\"\n },\n \"istioMetaClusterId\": {\n \"type\": \"string\"\n },\n \"istioMetaMeshId\": {\n \"type\": \"string\"\n },\n \"logLevel\": {\n \"type\": \"string\"\n },\n \"resources\": {\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"properties\": {\n \"add\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"podTemplate\": {\n \"properties\": {\n \"affinity\": {\n \"properties\": {\n \"nodeAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"preference\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"items\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extraAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"extraLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"imagePullSecrets\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"properties\": {\n \"fsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"items\": {\n \"properties\": {\n \"effect\": {\n \"type\": \"string\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"sdsContainer\": {\n \"properties\": {\n \"bootstrap\": {\n \"properties\": {\n \"logLevel\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"image\": {\n \"properties\": {\n \"digest\": {\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"type\": \"string\"\n },\n \"registry\": {\n \"type\": \"string\"\n },\n \"repository\": {\n \"type\": \"string\"\n },\n \"tag\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"properties\": {\n \"add\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"properties\": {\n \"clusterIP\": {\n \"type\": \"string\"\n },\n \"extraAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"extraLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"stats\": {\n \"properties\": {\n \"enableStatsRoute\": {\n \"type\": \"boolean\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"routePrefixRewrite\": {\n \"type\": \"string\"\n },\n \"statsRoutePrefixRewrite\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selfManaged\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"only one of 'kube' or 'selfManaged' may be set\",\n \"rule\": \"(has(self.kube) \\u0026\\u0026 !has(self.selfManaged)) || (!has(self.kube) \\u0026\\u0026 has(self.selfManaged))\"\n }\n ]\n }\n },\n \"title\": \"Gateway Parameters\",\n \"type\": \"object\"\n}", + "version": "gateway.gloo.solo.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Gateway Parameters", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz" + }, + "model": { + "category": { + "name": "Orchestration \u0026 Management" + }, + "displayName": "Gloo", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.18.0-beta18" + }, + "name": "gloo", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "API Gateway", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/GraphQLApi.json b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/GraphQLApi.json new file mode 100644 index 00000000000..65bc61e181b --- /dev/null +++ b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/GraphQLApi.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "GraphQLApi", + "schema": "{\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"allowedQueryHashes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"executableSchema\": {\n \"properties\": {\n \"executor\": {\n \"properties\": {\n \"local\": {\n \"properties\": {\n \"enableIntrospection\": {\n \"type\": \"boolean\"\n },\n \"options\": {\n \"properties\": {\n \"maxDepth\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resolutions\": {\n \"additionalProperties\": {\n \"properties\": {\n \"grpcResolver\": {\n \"properties\": {\n \"requestTransform\": {\n \"properties\": {\n \"methodName\": {\n \"type\": \"string\"\n },\n \"outgoingMessageJson\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"requestMetadata\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"serviceName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spanName\": {\n \"type\": \"string\"\n },\n \"timeout\": {\n \"type\": \"string\"\n },\n \"upstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"mockResolver\": {\n \"properties\": {\n \"asyncResponse\": {\n \"properties\": {\n \"delay\": {\n \"type\": \"string\"\n },\n \"response\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"errorResponse\": {\n \"type\": \"string\"\n },\n \"syncResponse\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"restResolver\": {\n \"properties\": {\n \"request\": {\n \"properties\": {\n \"body\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"queryParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"response\": {\n \"properties\": {\n \"resultRoot\": {\n \"type\": \"string\"\n },\n \"setters\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"spanName\": {\n \"type\": \"string\"\n },\n \"timeout\": {\n \"type\": \"string\"\n },\n \"upstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"statPrefix\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"remote\": {\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"queryParams\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"spanName\": {\n \"type\": \"string\"\n },\n \"upstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcDescriptorRegistry\": {\n \"properties\": {\n \"protoDescriptor\": {\n \"type\": \"string\"\n },\n \"protoDescriptorBin\": {\n \"format\": \"byte\",\n \"type\": \"string\"\n },\n \"protoRefsList\": {\n \"properties\": {\n \"configMapRefs\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"schemaDefinition\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"namespacedStatuses\": {\n \"properties\": {\n \"statuses\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"options\": {\n \"properties\": {\n \"logSensitiveInfo\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"persistedQueryCacheConfig\": {\n \"properties\": {\n \"cacheSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"statPrefix\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"stitchedSchema\": {\n \"properties\": {\n \"subschemas\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n },\n \"typeMerge\": {\n \"additionalProperties\": {\n \"properties\": {\n \"args\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"queryName\": {\n \"type\": \"string\"\n },\n \"selectionSet\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Graph QL Api\",\n \"type\": \"object\"\n}", + "version": "graphql.gloo.solo.io/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "Graph QL Api", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz" + }, + "model": { + "category": { + "name": "Orchestration \u0026 Management" + }, + "displayName": "Gloo", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.18.0-beta18" + }, + "name": "gloo", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "API Gateway", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/HttpListenerOption.json b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/HttpListenerOption.json new file mode 100644 index 00000000000..07c3d287484 --- /dev/null +++ b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/HttpListenerOption.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "HttpListenerOption", + "schema": "{\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"options\": {\n \"properties\": {\n \"buffer\": {\n \"properties\": {\n \"maxRequestBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"caching\": {\n \"properties\": {\n \"allowedVaryHeaders\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"cachingServiceRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"maxPayloadSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"timeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"connectionLimit\": {\n \"properties\": {\n \"delayBeforeClose\": {\n \"type\": \"string\"\n },\n \"maxActiveConnections\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"csrf\": {\n \"properties\": {\n \"additionalOrigins\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filterEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"shadowEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"disableExtProc\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"dlp\": {\n \"properties\": {\n \"dlpRules\": {\n \"items\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"actionType\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"customAction\": {\n \"properties\": {\n \"maskChar\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"percent\": {\n \"properties\": {\n \"value\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"regexActions\": {\n \"items\": {\n \"properties\": {\n \"regex\": {\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"keyValueAction\": {\n \"properties\": {\n \"keyToMask\": {\n \"type\": \"string\"\n },\n \"maskChar\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"percent\": {\n \"properties\": {\n \"value\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"shadow\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enabledFor\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"dynamicForwardProxy\": {\n \"properties\": {\n \"dnsCacheConfig\": {\n \"properties\": {\n \"appleDns\": {\n \"type\": \"object\"\n },\n \"caresDns\": {\n \"properties\": {\n \"dnsResolverOptions\": {\n \"properties\": {\n \"noDefaultSearchDomain\": {\n \"type\": \"boolean\"\n },\n \"useTcpForDnsLookups\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"resolvers\": {\n \"items\": {\n \"properties\": {\n \"pipe\": {\n \"properties\": {\n \"mode\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"socketAddress\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"ipv4Compat\": {\n \"type\": \"boolean\"\n },\n \"namedPort\": {\n \"type\": \"string\"\n },\n \"portValue\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resolverName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsCacheCircuitBreaker\": {\n \"properties\": {\n \"maxPendingRequests\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsFailureRefreshRate\": {\n \"properties\": {\n \"baseInterval\": {\n \"type\": \"string\"\n },\n \"maxInterval\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsLookupFamily\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"dnsQueryTimeout\": {\n \"type\": \"string\"\n },\n \"dnsRefreshRate\": {\n \"type\": \"string\"\n },\n \"hostTtl\": {\n \"type\": \"string\"\n },\n \"maxHosts\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"preresolveHostnames\": {\n \"items\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"ipv4Compat\": {\n \"type\": \"boolean\"\n },\n \"namedPort\": {\n \"type\": \"string\"\n },\n \"portValue\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resolverName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"saveUpstreamAddress\": {\n \"type\": \"boolean\"\n },\n \"sslConfig\": {\n \"properties\": {\n \"allowRenegotiation\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"alpnProtocols\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"parameters\": {\n \"properties\": {\n \"cipherSuites\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ecdhCurves\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maximumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minimumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"sds\": {\n \"properties\": {\n \"callCredentials\": {\n \"properties\": {\n \"fileCredentialSource\": {\n \"properties\": {\n \"header\": {\n \"type\": \"string\"\n },\n \"tokenFileName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"certificatesSecretName\": {\n \"type\": \"string\"\n },\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"targetUri\": {\n \"type\": \"string\"\n },\n \"validationContextName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sni\": {\n \"type\": \"string\"\n },\n \"sslFiles\": {\n \"properties\": {\n \"ocspStaple\": {\n \"type\": \"string\"\n },\n \"rootCa\": {\n \"type\": \"string\"\n },\n \"tlsCert\": {\n \"type\": \"string\"\n },\n \"tlsKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"verifySubjectAltName\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extProc\": {\n \"properties\": {\n \"allowModeOverride\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"asyncMode\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"disableClearRouteCache\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"failureModeAllow\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"filterMetadata\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"filterStage\": {\n \"properties\": {\n \"predicate\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"stage\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"forwardRules\": {\n \"properties\": {\n \"allowedHeaders\": {\n \"properties\": {\n \"patterns\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"disallowedHeaders\": {\n \"properties\": {\n \"patterns\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcService\": {\n \"properties\": {\n \"authority\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"extProcServerRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"initialMetadata\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"retryPolicy\": {\n \"properties\": {\n \"numRetries\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"retryBackOff\": {\n \"properties\": {\n \"baseInterval\": {\n \"type\": \"string\"\n },\n \"maxInterval\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"timeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"maxMessageTimeout\": {\n \"type\": \"string\"\n },\n \"messageTimeout\": {\n \"type\": \"string\"\n },\n \"metadataContextNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"mutationRules\": {\n \"properties\": {\n \"allowAllRouting\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"allowEnvoy\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"allowExpression\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disallowAll\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"disallowExpression\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disallowIsError\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"disallowSystem\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"processingMode\": {\n \"properties\": {\n \"requestBodyMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"requestHeaderMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"requestTrailerMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseBodyMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseHeaderMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseTrailerMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"requestAttributes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"responseAttributes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"statPrefix\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"typedMetadataContextNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"extauth\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"extauthzServerRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"failureModeAllow\": {\n \"type\": \"boolean\"\n },\n \"grpcService\": {\n \"properties\": {\n \"authority\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"httpService\": {\n \"properties\": {\n \"pathPrefix\": {\n \"type\": \"string\"\n },\n \"request\": {\n \"properties\": {\n \"allowedHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowedHeadersRegex\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"headersToAdd\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"response\": {\n \"properties\": {\n \"allowedClientHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowedUpstreamHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowedUpstreamHeadersToAppend\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"requestBody\": {\n \"properties\": {\n \"allowPartialMessage\": {\n \"type\": \"boolean\"\n },\n \"maxRequestBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"packAsBytes\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTimeout\": {\n \"type\": \"string\"\n },\n \"statPrefix\": {\n \"type\": \"string\"\n },\n \"statusOnError\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"transportApiVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"userIdHeader\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"properties\": {\n \"configs\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcJsonTranscoder\": {\n \"properties\": {\n \"autoMapping\": {\n \"type\": \"boolean\"\n },\n \"convertGrpcStatus\": {\n \"type\": \"boolean\"\n },\n \"ignoreUnknownQueryParameters\": {\n \"type\": \"boolean\"\n },\n \"ignoredQueryParameters\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"matchIncomingRequestRoute\": {\n \"type\": \"boolean\"\n },\n \"printOptions\": {\n \"properties\": {\n \"addWhitespace\": {\n \"type\": \"boolean\"\n },\n \"alwaysPrintEnumsAsInts\": {\n \"type\": \"boolean\"\n },\n \"alwaysPrintPrimitiveFields\": {\n \"type\": \"boolean\"\n },\n \"preserveProtoFieldNames\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"protoDescriptor\": {\n \"type\": \"string\"\n },\n \"protoDescriptorBin\": {\n \"format\": \"byte\",\n \"type\": \"string\"\n },\n \"protoDescriptorConfigMap\": {\n \"properties\": {\n \"configMapRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"services\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcWeb\": {\n \"properties\": {\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"gzip\": {\n \"properties\": {\n \"compressionLevel\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"compressionStrategy\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"contentLength\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"contentType\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"disableOnEtagHeader\": {\n \"type\": \"boolean\"\n },\n \"memoryLevel\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"removeAcceptEncodingHeader\": {\n \"type\": \"boolean\"\n },\n \"windowBits\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValidationSettings\": {\n \"properties\": {\n \"disableHttp1MethodValidation\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"healthCheck\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"httpConnectionManagerSettings\": {\n \"properties\": {\n \"acceptHttp10\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"allowChunkedLength\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"appendXForwardedPort\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"codecType\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"defaultHostForHttp10\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"delayedCloseTimeout\": {\n \"type\": \"string\"\n },\n \"drainTimeout\": {\n \"type\": \"string\"\n },\n \"enableTrailers\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"forwardClientCertDetails\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"generateRequestId\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headersWithUnderscoresAction\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"http2ProtocolOptions\": {\n \"properties\": {\n \"initialConnectionWindowSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"initialStreamWindowSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxConcurrentStreams\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"overrideStreamErrorOnInvalidHttpMessage\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"idleTimeout\": {\n \"type\": \"string\"\n },\n \"internalAddressConfig\": {\n \"properties\": {\n \"cidrRanges\": {\n \"items\": {\n \"properties\": {\n \"addressPrefix\": {\n \"type\": \"string\"\n },\n \"prefixLen\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"unixSockets\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"maxConnectionDuration\": {\n \"type\": \"string\"\n },\n \"maxHeadersCount\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxRequestHeadersKb\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxRequestsPerConnection\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxStreamDuration\": {\n \"type\": \"string\"\n },\n \"mergeSlashes\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"normalizePath\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"pathWithEscapedSlashesAction\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"preserveCaseHeaderKeyFormat\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"preserveExternalRequestId\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"properCaseHeaderKeyFormat\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"proxy100Continue\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"requestHeadersTimeout\": {\n \"type\": \"string\"\n },\n \"requestTimeout\": {\n \"type\": \"string\"\n },\n \"serverHeaderTransformation\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"serverName\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"setCurrentClientCertDetails\": {\n \"properties\": {\n \"cert\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"chain\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"dns\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"subject\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"uri\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"skipXffAppend\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"streamIdleTimeout\": {\n \"type\": \"string\"\n },\n \"stripAnyHostPort\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"tracing\": {\n \"properties\": {\n \"datadogConfig\": {\n \"properties\": {\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"collectorUpstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceName\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"environmentVariablesForTags\": {\n \"items\": {\n \"properties\": {\n \"defaultValue\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"name\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"tag\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"literalsForTags\": {\n \"items\": {\n \"properties\": {\n \"tag\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"value\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"openCensusConfig\": {\n \"properties\": {\n \"grpcAddress\": {\n \"properties\": {\n \"statPrefix\": {\n \"type\": \"string\"\n },\n \"targetUri\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"httpAddress\": {\n \"type\": \"string\"\n },\n \"incomingTraceContext\": {\n \"items\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"array\"\n },\n \"ocagentExporterEnabled\": {\n \"type\": \"boolean\"\n },\n \"outgoingTraceContext\": {\n \"items\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"array\"\n },\n \"traceConfig\": {\n \"properties\": {\n \"constantSampler\": {\n \"properties\": {\n \"decision\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"maxNumberOfAnnotations\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxNumberOfAttributes\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxNumberOfLinks\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxNumberOfMessageEvents\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"probabilitySampler\": {\n \"properties\": {\n \"samplingProbability\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimitingSampler\": {\n \"properties\": {\n \"qps\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"openTelemetryConfig\": {\n \"properties\": {\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"collectorUpstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"requestHeadersForTags\": {\n \"items\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tracePercentages\": {\n \"properties\": {\n \"clientSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"overallSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"randomSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"verbose\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"zipkinConfig\": {\n \"properties\": {\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"collectorEndpoint\": {\n \"type\": \"string\"\n },\n \"collectorEndpointVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"collectorUpstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sharedSpanContext\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"traceId128bit\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upgrades\": {\n \"items\": {\n \"properties\": {\n \"connect\": {\n \"properties\": {\n \"enabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"websocket\": {\n \"properties\": {\n \"enabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"useRemoteAddress\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"uuidRequestIdConfig\": {\n \"properties\": {\n \"packTraceReason\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"useRequestIdForTraceSampling\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"via\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"xffNumTrustedHops\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"httpLocalRatelimit\": {\n \"properties\": {\n \"defaultLimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"enableXRatelimitHeaders\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"localRateLimitPerDownstreamConnection\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"leftmostXffAddress\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"networkLocalRatelimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"proxyLatency\": {\n \"properties\": {\n \"chargeClusterStat\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"chargeListenerStat\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"emitDynamicMetadata\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"measureRequestInternally\": {\n \"type\": \"boolean\"\n },\n \"request\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"response\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ratelimitServer\": {\n \"properties\": {\n \"denyOnFail\": {\n \"type\": \"boolean\"\n },\n \"enableXRatelimitHeaders\": {\n \"type\": \"boolean\"\n },\n \"grpcService\": {\n \"properties\": {\n \"authority\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimitBeforeAuth\": {\n \"type\": \"boolean\"\n },\n \"ratelimitServerRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTimeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"router\": {\n \"properties\": {\n \"dynamicStats\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"suppressEnvoyHeaders\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"sanitizeClusterHeader\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"statefulSession\": {\n \"properties\": {\n \"cookieBased\": {\n \"properties\": {\n \"cookie\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"ttl\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"headerBased\": {\n \"properties\": {\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"strict\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"tap\": {\n \"properties\": {\n \"sinks\": {\n \"items\": {\n \"properties\": {\n \"grpcService\": {\n \"properties\": {\n \"tapServer\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"httpService\": {\n \"properties\": {\n \"tapServer\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"timeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"waf\": {\n \"properties\": {\n \"auditLogging\": {\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"location\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"configMapRuleSets\": {\n \"items\": {\n \"properties\": {\n \"configMapRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dataMapKeys\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"coreRuleSet\": {\n \"properties\": {\n \"customSettingsFile\": {\n \"type\": \"string\"\n },\n \"customSettingsString\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"customInterventionMessage\": {\n \"type\": \"string\"\n },\n \"disabled\": {\n \"type\": \"boolean\"\n },\n \"requestHeadersOnly\": {\n \"type\": \"boolean\"\n },\n \"responseHeadersOnly\": {\n \"type\": \"boolean\"\n },\n \"ruleSets\": {\n \"items\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n },\n \"files\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ruleStr\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"wasm\": {\n \"properties\": {\n \"filters\": {\n \"items\": {\n \"properties\": {\n \"config\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"failOpen\": {\n \"type\": \"boolean\"\n },\n \"filePath\": {\n \"type\": \"string\"\n },\n \"filterStage\": {\n \"properties\": {\n \"predicate\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"stage\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"rootId\": {\n \"type\": \"string\"\n },\n \"vmType\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"targetRefs\": {\n \"items\": {\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"sectionName\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Http Listener Option\",\n \"type\": \"object\"\n}", + "version": "gateway.solo.io/v1" + }, + "configuration": null, + "description": "", + "displayName": "Http Listener Option", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz" + }, + "model": { + "category": { + "name": "Orchestration \u0026 Management" + }, + "displayName": "Gloo", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.18.0-beta18" + }, + "name": "gloo", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "API Gateway", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/ListenerOption.json b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/ListenerOption.json new file mode 100644 index 00000000000..78d024d4169 --- /dev/null +++ b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/ListenerOption.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "ListenerOption", + "schema": "{\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"options\": {\n \"properties\": {\n \"accessLoggingService\": {\n \"properties\": {\n \"accessLog\": {\n \"items\": {\n \"properties\": {\n \"fileSink\": {\n \"properties\": {\n \"jsonFormat\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"stringFormat\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"filter\": {\n \"properties\": {\n \"andFilter\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"durationFilter\": {\n \"properties\": {\n \"comparison\": {\n \"properties\": {\n \"op\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"value\": {\n \"properties\": {\n \"defaultValue\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcStatusFilter\": {\n \"properties\": {\n \"exclude\": {\n \"type\": \"boolean\"\n },\n \"statuses\": {\n \"items\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"headerFilter\": {\n \"properties\": {\n \"header\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"safeRegexMatch\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"notHealthCheckFilter\": {\n \"type\": \"object\"\n },\n \"orFilter\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"responseFlagFilter\": {\n \"properties\": {\n \"flags\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeFilter\": {\n \"properties\": {\n \"percentSampled\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n },\n \"useIndependentRandomness\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"statusCodeFilter\": {\n \"properties\": {\n \"comparison\": {\n \"properties\": {\n \"op\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"value\": {\n \"properties\": {\n \"defaultValue\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"traceableFilter\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcService\": {\n \"properties\": {\n \"additionalRequestHeadersToLog\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalResponseHeadersToLog\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalResponseTrailersToLog\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"logName\": {\n \"type\": \"string\"\n },\n \"staticClusterName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"connectionBalanceConfig\": {\n \"properties\": {\n \"exactBalance\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"properties\": {\n \"configs\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"listenerAccessLoggingService\": {\n \"properties\": {\n \"accessLog\": {\n \"items\": {\n \"properties\": {\n \"fileSink\": {\n \"properties\": {\n \"jsonFormat\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"stringFormat\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"filter\": {\n \"properties\": {\n \"andFilter\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"durationFilter\": {\n \"properties\": {\n \"comparison\": {\n \"properties\": {\n \"op\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"value\": {\n \"properties\": {\n \"defaultValue\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcStatusFilter\": {\n \"properties\": {\n \"exclude\": {\n \"type\": \"boolean\"\n },\n \"statuses\": {\n \"items\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"headerFilter\": {\n \"properties\": {\n \"header\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"safeRegexMatch\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"notHealthCheckFilter\": {\n \"type\": \"object\"\n },\n \"orFilter\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"responseFlagFilter\": {\n \"properties\": {\n \"flags\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeFilter\": {\n \"properties\": {\n \"percentSampled\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n },\n \"useIndependentRandomness\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"statusCodeFilter\": {\n \"properties\": {\n \"comparison\": {\n \"properties\": {\n \"op\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"value\": {\n \"properties\": {\n \"defaultValue\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"traceableFilter\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcService\": {\n \"properties\": {\n \"additionalRequestHeadersToLog\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalResponseHeadersToLog\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalResponseTrailersToLog\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"logName\": {\n \"type\": \"string\"\n },\n \"staticClusterName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"perConnectionBufferLimitBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"proxyProtocol\": {\n \"properties\": {\n \"allowRequestsWithoutProxyProtocol\": {\n \"type\": \"boolean\"\n },\n \"rules\": {\n \"items\": {\n \"properties\": {\n \"onTlvPresent\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tlvType\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"socketOptions\": {\n \"items\": {\n \"properties\": {\n \"bufValue\": {\n \"format\": \"byte\",\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"intValue\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"level\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"name\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"state\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"targetRefs\": {\n \"items\": {\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"sectionName\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Listener Option\",\n \"type\": \"object\"\n}", + "version": "gateway.solo.io/v1" + }, + "configuration": null, + "description": "", + "displayName": "Listener Option", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz" + }, + "model": { + "category": { + "name": "Orchestration \u0026 Management" + }, + "displayName": "Gloo", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.18.0-beta18" + }, + "name": "gloo", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "API Gateway", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/MatchableHttpGateway.json b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/MatchableHttpGateway.json new file mode 100644 index 00000000000..ecd0518dda0 --- /dev/null +++ b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/MatchableHttpGateway.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "MatchableHttpGateway", + "schema": "{\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"httpGateway\": {\n \"properties\": {\n \"options\": {\n \"properties\": {\n \"buffer\": {\n \"properties\": {\n \"maxRequestBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"caching\": {\n \"properties\": {\n \"allowedVaryHeaders\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"cachingServiceRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"maxPayloadSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"timeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"connectionLimit\": {\n \"properties\": {\n \"delayBeforeClose\": {\n \"type\": \"string\"\n },\n \"maxActiveConnections\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"csrf\": {\n \"properties\": {\n \"additionalOrigins\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filterEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"shadowEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"disableExtProc\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"dlp\": {\n \"properties\": {\n \"dlpRules\": {\n \"items\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"actionType\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"customAction\": {\n \"properties\": {\n \"maskChar\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"percent\": {\n \"properties\": {\n \"value\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"regexActions\": {\n \"items\": {\n \"properties\": {\n \"regex\": {\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"keyValueAction\": {\n \"properties\": {\n \"keyToMask\": {\n \"type\": \"string\"\n },\n \"maskChar\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"percent\": {\n \"properties\": {\n \"value\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"shadow\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enabledFor\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"dynamicForwardProxy\": {\n \"properties\": {\n \"dnsCacheConfig\": {\n \"properties\": {\n \"appleDns\": {\n \"type\": \"object\"\n },\n \"caresDns\": {\n \"properties\": {\n \"dnsResolverOptions\": {\n \"properties\": {\n \"noDefaultSearchDomain\": {\n \"type\": \"boolean\"\n },\n \"useTcpForDnsLookups\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"resolvers\": {\n \"items\": {\n \"properties\": {\n \"pipe\": {\n \"properties\": {\n \"mode\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"socketAddress\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"ipv4Compat\": {\n \"type\": \"boolean\"\n },\n \"namedPort\": {\n \"type\": \"string\"\n },\n \"portValue\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resolverName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsCacheCircuitBreaker\": {\n \"properties\": {\n \"maxPendingRequests\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsFailureRefreshRate\": {\n \"properties\": {\n \"baseInterval\": {\n \"type\": \"string\"\n },\n \"maxInterval\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsLookupFamily\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"dnsQueryTimeout\": {\n \"type\": \"string\"\n },\n \"dnsRefreshRate\": {\n \"type\": \"string\"\n },\n \"hostTtl\": {\n \"type\": \"string\"\n },\n \"maxHosts\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"preresolveHostnames\": {\n \"items\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"ipv4Compat\": {\n \"type\": \"boolean\"\n },\n \"namedPort\": {\n \"type\": \"string\"\n },\n \"portValue\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resolverName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"saveUpstreamAddress\": {\n \"type\": \"boolean\"\n },\n \"sslConfig\": {\n \"properties\": {\n \"allowRenegotiation\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"alpnProtocols\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"parameters\": {\n \"properties\": {\n \"cipherSuites\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ecdhCurves\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maximumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minimumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"sds\": {\n \"properties\": {\n \"callCredentials\": {\n \"properties\": {\n \"fileCredentialSource\": {\n \"properties\": {\n \"header\": {\n \"type\": \"string\"\n },\n \"tokenFileName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"certificatesSecretName\": {\n \"type\": \"string\"\n },\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"targetUri\": {\n \"type\": \"string\"\n },\n \"validationContextName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sni\": {\n \"type\": \"string\"\n },\n \"sslFiles\": {\n \"properties\": {\n \"ocspStaple\": {\n \"type\": \"string\"\n },\n \"rootCa\": {\n \"type\": \"string\"\n },\n \"tlsCert\": {\n \"type\": \"string\"\n },\n \"tlsKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"verifySubjectAltName\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extProc\": {\n \"properties\": {\n \"allowModeOverride\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"asyncMode\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"disableClearRouteCache\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"failureModeAllow\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"filterMetadata\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"filterStage\": {\n \"properties\": {\n \"predicate\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"stage\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"forwardRules\": {\n \"properties\": {\n \"allowedHeaders\": {\n \"properties\": {\n \"patterns\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"disallowedHeaders\": {\n \"properties\": {\n \"patterns\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcService\": {\n \"properties\": {\n \"authority\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"extProcServerRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"initialMetadata\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"retryPolicy\": {\n \"properties\": {\n \"numRetries\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"retryBackOff\": {\n \"properties\": {\n \"baseInterval\": {\n \"type\": \"string\"\n },\n \"maxInterval\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"timeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"maxMessageTimeout\": {\n \"type\": \"string\"\n },\n \"messageTimeout\": {\n \"type\": \"string\"\n },\n \"metadataContextNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"mutationRules\": {\n \"properties\": {\n \"allowAllRouting\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"allowEnvoy\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"allowExpression\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disallowAll\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"disallowExpression\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disallowIsError\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"disallowSystem\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"processingMode\": {\n \"properties\": {\n \"requestBodyMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"requestHeaderMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"requestTrailerMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseBodyMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseHeaderMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseTrailerMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"requestAttributes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"responseAttributes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"statPrefix\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"typedMetadataContextNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"extauth\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"extauthzServerRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"failureModeAllow\": {\n \"type\": \"boolean\"\n },\n \"grpcService\": {\n \"properties\": {\n \"authority\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"httpService\": {\n \"properties\": {\n \"pathPrefix\": {\n \"type\": \"string\"\n },\n \"request\": {\n \"properties\": {\n \"allowedHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowedHeadersRegex\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"headersToAdd\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"response\": {\n \"properties\": {\n \"allowedClientHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowedUpstreamHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowedUpstreamHeadersToAppend\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"requestBody\": {\n \"properties\": {\n \"allowPartialMessage\": {\n \"type\": \"boolean\"\n },\n \"maxRequestBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"packAsBytes\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTimeout\": {\n \"type\": \"string\"\n },\n \"statPrefix\": {\n \"type\": \"string\"\n },\n \"statusOnError\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"transportApiVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"userIdHeader\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"properties\": {\n \"configs\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcJsonTranscoder\": {\n \"properties\": {\n \"autoMapping\": {\n \"type\": \"boolean\"\n },\n \"convertGrpcStatus\": {\n \"type\": \"boolean\"\n },\n \"ignoreUnknownQueryParameters\": {\n \"type\": \"boolean\"\n },\n \"ignoredQueryParameters\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"matchIncomingRequestRoute\": {\n \"type\": \"boolean\"\n },\n \"printOptions\": {\n \"properties\": {\n \"addWhitespace\": {\n \"type\": \"boolean\"\n },\n \"alwaysPrintEnumsAsInts\": {\n \"type\": \"boolean\"\n },\n \"alwaysPrintPrimitiveFields\": {\n \"type\": \"boolean\"\n },\n \"preserveProtoFieldNames\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"protoDescriptor\": {\n \"type\": \"string\"\n },\n \"protoDescriptorBin\": {\n \"format\": \"byte\",\n \"type\": \"string\"\n },\n \"protoDescriptorConfigMap\": {\n \"properties\": {\n \"configMapRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"services\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcWeb\": {\n \"properties\": {\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"gzip\": {\n \"properties\": {\n \"compressionLevel\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"compressionStrategy\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"contentLength\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"contentType\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"disableOnEtagHeader\": {\n \"type\": \"boolean\"\n },\n \"memoryLevel\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"removeAcceptEncodingHeader\": {\n \"type\": \"boolean\"\n },\n \"windowBits\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValidationSettings\": {\n \"properties\": {\n \"disableHttp1MethodValidation\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"healthCheck\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"httpConnectionManagerSettings\": {\n \"properties\": {\n \"acceptHttp10\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"allowChunkedLength\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"appendXForwardedPort\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"codecType\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"defaultHostForHttp10\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"delayedCloseTimeout\": {\n \"type\": \"string\"\n },\n \"drainTimeout\": {\n \"type\": \"string\"\n },\n \"enableTrailers\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"forwardClientCertDetails\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"generateRequestId\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headersWithUnderscoresAction\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"http2ProtocolOptions\": {\n \"properties\": {\n \"initialConnectionWindowSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"initialStreamWindowSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxConcurrentStreams\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"overrideStreamErrorOnInvalidHttpMessage\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"idleTimeout\": {\n \"type\": \"string\"\n },\n \"internalAddressConfig\": {\n \"properties\": {\n \"cidrRanges\": {\n \"items\": {\n \"properties\": {\n \"addressPrefix\": {\n \"type\": \"string\"\n },\n \"prefixLen\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"unixSockets\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"maxConnectionDuration\": {\n \"type\": \"string\"\n },\n \"maxHeadersCount\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxRequestHeadersKb\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxRequestsPerConnection\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxStreamDuration\": {\n \"type\": \"string\"\n },\n \"mergeSlashes\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"normalizePath\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"pathWithEscapedSlashesAction\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"preserveCaseHeaderKeyFormat\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"preserveExternalRequestId\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"properCaseHeaderKeyFormat\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"proxy100Continue\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"requestHeadersTimeout\": {\n \"type\": \"string\"\n },\n \"requestTimeout\": {\n \"type\": \"string\"\n },\n \"serverHeaderTransformation\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"serverName\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"setCurrentClientCertDetails\": {\n \"properties\": {\n \"cert\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"chain\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"dns\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"subject\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"uri\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"skipXffAppend\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"streamIdleTimeout\": {\n \"type\": \"string\"\n },\n \"stripAnyHostPort\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"tracing\": {\n \"properties\": {\n \"datadogConfig\": {\n \"properties\": {\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"collectorUpstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceName\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"environmentVariablesForTags\": {\n \"items\": {\n \"properties\": {\n \"defaultValue\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"name\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"tag\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"literalsForTags\": {\n \"items\": {\n \"properties\": {\n \"tag\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"value\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"openCensusConfig\": {\n \"properties\": {\n \"grpcAddress\": {\n \"properties\": {\n \"statPrefix\": {\n \"type\": \"string\"\n },\n \"targetUri\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"httpAddress\": {\n \"type\": \"string\"\n },\n \"incomingTraceContext\": {\n \"items\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"array\"\n },\n \"ocagentExporterEnabled\": {\n \"type\": \"boolean\"\n },\n \"outgoingTraceContext\": {\n \"items\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"array\"\n },\n \"traceConfig\": {\n \"properties\": {\n \"constantSampler\": {\n \"properties\": {\n \"decision\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"maxNumberOfAnnotations\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxNumberOfAttributes\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxNumberOfLinks\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxNumberOfMessageEvents\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"probabilitySampler\": {\n \"properties\": {\n \"samplingProbability\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimitingSampler\": {\n \"properties\": {\n \"qps\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"openTelemetryConfig\": {\n \"properties\": {\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"collectorUpstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"requestHeadersForTags\": {\n \"items\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tracePercentages\": {\n \"properties\": {\n \"clientSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"overallSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"randomSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"verbose\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"zipkinConfig\": {\n \"properties\": {\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"collectorEndpoint\": {\n \"type\": \"string\"\n },\n \"collectorEndpointVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"collectorUpstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sharedSpanContext\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"traceId128bit\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upgrades\": {\n \"items\": {\n \"properties\": {\n \"connect\": {\n \"properties\": {\n \"enabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"websocket\": {\n \"properties\": {\n \"enabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"useRemoteAddress\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"uuidRequestIdConfig\": {\n \"properties\": {\n \"packTraceReason\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"useRequestIdForTraceSampling\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"via\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"xffNumTrustedHops\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"httpLocalRatelimit\": {\n \"properties\": {\n \"defaultLimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"enableXRatelimitHeaders\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"localRateLimitPerDownstreamConnection\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"leftmostXffAddress\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"networkLocalRatelimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"proxyLatency\": {\n \"properties\": {\n \"chargeClusterStat\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"chargeListenerStat\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"emitDynamicMetadata\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"measureRequestInternally\": {\n \"type\": \"boolean\"\n },\n \"request\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"response\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ratelimitServer\": {\n \"properties\": {\n \"denyOnFail\": {\n \"type\": \"boolean\"\n },\n \"enableXRatelimitHeaders\": {\n \"type\": \"boolean\"\n },\n \"grpcService\": {\n \"properties\": {\n \"authority\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimitBeforeAuth\": {\n \"type\": \"boolean\"\n },\n \"ratelimitServerRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTimeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"router\": {\n \"properties\": {\n \"dynamicStats\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"suppressEnvoyHeaders\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"sanitizeClusterHeader\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"statefulSession\": {\n \"properties\": {\n \"cookieBased\": {\n \"properties\": {\n \"cookie\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"ttl\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"headerBased\": {\n \"properties\": {\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"strict\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"tap\": {\n \"properties\": {\n \"sinks\": {\n \"items\": {\n \"properties\": {\n \"grpcService\": {\n \"properties\": {\n \"tapServer\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"httpService\": {\n \"properties\": {\n \"tapServer\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"timeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"waf\": {\n \"properties\": {\n \"auditLogging\": {\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"location\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"configMapRuleSets\": {\n \"items\": {\n \"properties\": {\n \"configMapRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dataMapKeys\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"coreRuleSet\": {\n \"properties\": {\n \"customSettingsFile\": {\n \"type\": \"string\"\n },\n \"customSettingsString\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"customInterventionMessage\": {\n \"type\": \"string\"\n },\n \"disabled\": {\n \"type\": \"boolean\"\n },\n \"requestHeadersOnly\": {\n \"type\": \"boolean\"\n },\n \"responseHeadersOnly\": {\n \"type\": \"boolean\"\n },\n \"ruleSets\": {\n \"items\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n },\n \"files\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ruleStr\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"wasm\": {\n \"properties\": {\n \"filters\": {\n \"items\": {\n \"properties\": {\n \"config\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"failOpen\": {\n \"type\": \"boolean\"\n },\n \"filePath\": {\n \"type\": \"string\"\n },\n \"filterStage\": {\n \"properties\": {\n \"predicate\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"stage\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"rootId\": {\n \"type\": \"string\"\n },\n \"vmType\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"virtualServiceExpressions\": {\n \"properties\": {\n \"expressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"virtualServiceNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"virtualServiceSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"virtualServices\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"matcher\": {\n \"properties\": {\n \"sourcePrefixRanges\": {\n \"items\": {\n \"properties\": {\n \"addressPrefix\": {\n \"type\": \"string\"\n },\n \"prefixLen\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sslConfig\": {\n \"properties\": {\n \"alpnProtocols\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"disableTlsSessionResumption\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"ocspStaplePolicy\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"oneWayTls\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"parameters\": {\n \"properties\": {\n \"cipherSuites\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ecdhCurves\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maximumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minimumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"sds\": {\n \"properties\": {\n \"callCredentials\": {\n \"properties\": {\n \"fileCredentialSource\": {\n \"properties\": {\n \"header\": {\n \"type\": \"string\"\n },\n \"tokenFileName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"certificatesSecretName\": {\n \"type\": \"string\"\n },\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"targetUri\": {\n \"type\": \"string\"\n },\n \"validationContextName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sniDomains\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"sslFiles\": {\n \"properties\": {\n \"ocspStaple\": {\n \"type\": \"string\"\n },\n \"rootCa\": {\n \"type\": \"string\"\n },\n \"tlsCert\": {\n \"type\": \"string\"\n },\n \"tlsKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"transportSocketConnectTimeout\": {\n \"type\": \"string\"\n },\n \"verifySubjectAltName\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"namespacedStatuses\": {\n \"properties\": {\n \"statuses\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Matchable Http Gateway\",\n \"type\": \"object\"\n}", + "version": "gateway.solo.io/v1" + }, + "configuration": null, + "description": "", + "displayName": "Matchable Http Gateway", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz" + }, + "model": { + "category": { + "name": "Orchestration \u0026 Management" + }, + "displayName": "Gloo", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.18.0-beta18" + }, + "name": "gloo", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "API Gateway", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/MatchableTcpGateway.json b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/MatchableTcpGateway.json new file mode 100644 index 00000000000..caf497a8cce --- /dev/null +++ b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/MatchableTcpGateway.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "MatchableTcpGateway", + "schema": "{\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"matcher\": {\n \"properties\": {\n \"passthroughCipherSuites\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"sourcePrefixRanges\": {\n \"items\": {\n \"properties\": {\n \"addressPrefix\": {\n \"type\": \"string\"\n },\n \"prefixLen\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sslConfig\": {\n \"properties\": {\n \"alpnProtocols\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"disableTlsSessionResumption\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"ocspStaplePolicy\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"oneWayTls\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"parameters\": {\n \"properties\": {\n \"cipherSuites\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ecdhCurves\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maximumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minimumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"sds\": {\n \"properties\": {\n \"callCredentials\": {\n \"properties\": {\n \"fileCredentialSource\": {\n \"properties\": {\n \"header\": {\n \"type\": \"string\"\n },\n \"tokenFileName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"certificatesSecretName\": {\n \"type\": \"string\"\n },\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"targetUri\": {\n \"type\": \"string\"\n },\n \"validationContextName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sniDomains\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"sslFiles\": {\n \"properties\": {\n \"ocspStaple\": {\n \"type\": \"string\"\n },\n \"rootCa\": {\n \"type\": \"string\"\n },\n \"tlsCert\": {\n \"type\": \"string\"\n },\n \"tlsKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"transportSocketConnectTimeout\": {\n \"type\": \"string\"\n },\n \"verifySubjectAltName\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"namespacedStatuses\": {\n \"properties\": {\n \"statuses\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tcpGateway\": {\n \"properties\": {\n \"options\": {\n \"properties\": {\n \"connectionLimit\": {\n \"properties\": {\n \"delayBeforeClose\": {\n \"type\": \"string\"\n },\n \"maxActiveConnections\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"localRatelimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"tcpProxySettings\": {\n \"properties\": {\n \"accessLogFlushInterval\": {\n \"type\": \"string\"\n },\n \"idleTimeout\": {\n \"type\": \"string\"\n },\n \"maxConnectAttempts\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"tunnelingConfig\": {\n \"properties\": {\n \"headersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"hostname\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tcpHosts\": {\n \"items\": {\n \"properties\": {\n \"destination\": {\n \"properties\": {\n \"forwardSniClusterName\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"multi\": {\n \"properties\": {\n \"destinations\": {\n \"items\": {\n \"properties\": {\n \"destination\": {\n \"properties\": {\n \"consul\": {\n \"properties\": {\n \"dataCenters\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"serviceName\": {\n \"type\": \"string\"\n },\n \"tags\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"destinationSpec\": {\n \"properties\": {\n \"aws\": {\n \"properties\": {\n \"invocationStyle\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"logicalName\": {\n \"type\": \"string\"\n },\n \"requestTransformation\": {\n \"type\": \"boolean\"\n },\n \"responseTransformation\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsAlb\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsApiGateway\": {\n \"type\": \"boolean\"\n },\n \"wrapAsApiGateway\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"azure\": {\n \"properties\": {\n \"functionName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"grpc\": {\n \"properties\": {\n \"function\": {\n \"type\": \"string\"\n },\n \"package\": {\n \"type\": \"string\"\n },\n \"parameters\": {\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"rest\": {\n \"properties\": {\n \"functionName\": {\n \"type\": \"string\"\n },\n \"parameters\": {\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"kube\": {\n \"properties\": {\n \"port\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"ref\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"subset\": {\n \"properties\": {\n \"values\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upstream\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"options\": {\n \"properties\": {\n \"bufferPerRoute\": {\n \"properties\": {\n \"buffer\": {\n \"properties\": {\n \"maxRequestBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"disabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"csrf\": {\n \"properties\": {\n \"additionalOrigins\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filterEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"shadowEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extauth\": {\n \"properties\": {\n \"configRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"customAuth\": {\n \"properties\": {\n \"contextExtensions\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"properties\": {\n \"configs\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"headerManipulation\": {\n \"properties\": {\n \"requestHeadersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requestHeadersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"responseHeadersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseHeadersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"stagedTransformations\": {\n \"properties\": {\n \"early\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"inheritTransformation\": {\n \"type\": \"boolean\"\n },\n \"logRequestResponseInfo\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"postRouting\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"regular\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"transformations\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"weight\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"single\": {\n \"properties\": {\n \"consul\": {\n \"properties\": {\n \"dataCenters\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"serviceName\": {\n \"type\": \"string\"\n },\n \"tags\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"destinationSpec\": {\n \"properties\": {\n \"aws\": {\n \"properties\": {\n \"invocationStyle\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"logicalName\": {\n \"type\": \"string\"\n },\n \"requestTransformation\": {\n \"type\": \"boolean\"\n },\n \"responseTransformation\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsAlb\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsApiGateway\": {\n \"type\": \"boolean\"\n },\n \"wrapAsApiGateway\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"azure\": {\n \"properties\": {\n \"functionName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"grpc\": {\n \"properties\": {\n \"function\": {\n \"type\": \"string\"\n },\n \"package\": {\n \"type\": \"string\"\n },\n \"parameters\": {\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"rest\": {\n \"properties\": {\n \"functionName\": {\n \"type\": \"string\"\n },\n \"parameters\": {\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"kube\": {\n \"properties\": {\n \"port\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"ref\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"subset\": {\n \"properties\": {\n \"values\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upstream\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upstreamGroup\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"sslConfig\": {\n \"properties\": {\n \"alpnProtocols\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"disableTlsSessionResumption\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"ocspStaplePolicy\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"oneWayTls\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"parameters\": {\n \"properties\": {\n \"cipherSuites\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ecdhCurves\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maximumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minimumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"sds\": {\n \"properties\": {\n \"callCredentials\": {\n \"properties\": {\n \"fileCredentialSource\": {\n \"properties\": {\n \"header\": {\n \"type\": \"string\"\n },\n \"tokenFileName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"certificatesSecretName\": {\n \"type\": \"string\"\n },\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"targetUri\": {\n \"type\": \"string\"\n },\n \"validationContextName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sniDomains\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"sslFiles\": {\n \"properties\": {\n \"ocspStaple\": {\n \"type\": \"string\"\n },\n \"rootCa\": {\n \"type\": \"string\"\n },\n \"tlsCert\": {\n \"type\": \"string\"\n },\n \"tlsKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"transportSocketConnectTimeout\": {\n \"type\": \"string\"\n },\n \"verifySubjectAltName\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Matchable Tcp Gateway\",\n \"type\": \"object\"\n}", + "version": "gateway.solo.io/v1" + }, + "configuration": null, + "description": "", + "displayName": "Matchable Tcp Gateway", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz" + }, + "model": { + "category": { + "name": "Orchestration \u0026 Management" + }, + "displayName": "Gloo", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.18.0-beta18" + }, + "name": "gloo", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "API Gateway", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003emeshery-logo-light\u003c/title\u003e\u003cpolygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/\u003e\u003cpolygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/\u003e\u003cpolygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/\u003e\u003cpath d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/\u003e\u003cpath d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/\u003e\u003cpolygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/\u003e\u003cpolygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/\u003e\u003cpath d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/\u003e\u003cpath d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/\u003e\u003cpolygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/Proxy.json b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/Proxy.json new file mode 100644 index 00000000000..aaf7c178511 --- /dev/null +++ b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/Proxy.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "Proxy", + "schema": "{\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"compressedSpec\": {\n \"type\": \"string\"\n },\n \"listeners\": {\n \"items\": {\n \"properties\": {\n \"aggregateListener\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"bindAddress\": {\n \"type\": \"string\"\n },\n \"bindPort\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"httpListener\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"hybridListener\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"metadataStatic\": {\n \"properties\": {\n \"sources\": {\n \"items\": {\n \"properties\": {\n \"observedGeneration\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resourceKind\": {\n \"type\": \"string\"\n },\n \"resourceRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"options\": {\n \"properties\": {\n \"accessLoggingService\": {\n \"properties\": {\n \"accessLog\": {\n \"items\": {\n \"properties\": {\n \"fileSink\": {\n \"properties\": {\n \"jsonFormat\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"stringFormat\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"filter\": {\n \"properties\": {\n \"andFilter\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"durationFilter\": {\n \"properties\": {\n \"comparison\": {\n \"properties\": {\n \"op\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"value\": {\n \"properties\": {\n \"defaultValue\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcStatusFilter\": {\n \"properties\": {\n \"exclude\": {\n \"type\": \"boolean\"\n },\n \"statuses\": {\n \"items\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"headerFilter\": {\n \"properties\": {\n \"header\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"safeRegexMatch\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"notHealthCheckFilter\": {\n \"type\": \"object\"\n },\n \"orFilter\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"responseFlagFilter\": {\n \"properties\": {\n \"flags\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeFilter\": {\n \"properties\": {\n \"percentSampled\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n },\n \"useIndependentRandomness\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"statusCodeFilter\": {\n \"properties\": {\n \"comparison\": {\n \"properties\": {\n \"op\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"value\": {\n \"properties\": {\n \"defaultValue\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"traceableFilter\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcService\": {\n \"properties\": {\n \"additionalRequestHeadersToLog\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalResponseHeadersToLog\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalResponseTrailersToLog\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"logName\": {\n \"type\": \"string\"\n },\n \"staticClusterName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"connectionBalanceConfig\": {\n \"properties\": {\n \"exactBalance\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"properties\": {\n \"configs\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"listenerAccessLoggingService\": {\n \"properties\": {\n \"accessLog\": {\n \"items\": {\n \"properties\": {\n \"fileSink\": {\n \"properties\": {\n \"jsonFormat\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"stringFormat\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"filter\": {\n \"properties\": {\n \"andFilter\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"durationFilter\": {\n \"properties\": {\n \"comparison\": {\n \"properties\": {\n \"op\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"value\": {\n \"properties\": {\n \"defaultValue\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcStatusFilter\": {\n \"properties\": {\n \"exclude\": {\n \"type\": \"boolean\"\n },\n \"statuses\": {\n \"items\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"headerFilter\": {\n \"properties\": {\n \"header\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"safeRegexMatch\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"notHealthCheckFilter\": {\n \"type\": \"object\"\n },\n \"orFilter\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"responseFlagFilter\": {\n \"properties\": {\n \"flags\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeFilter\": {\n \"properties\": {\n \"percentSampled\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n },\n \"useIndependentRandomness\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"statusCodeFilter\": {\n \"properties\": {\n \"comparison\": {\n \"properties\": {\n \"op\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"value\": {\n \"properties\": {\n \"defaultValue\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"traceableFilter\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcService\": {\n \"properties\": {\n \"additionalRequestHeadersToLog\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalResponseHeadersToLog\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalResponseTrailersToLog\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"logName\": {\n \"type\": \"string\"\n },\n \"staticClusterName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"perConnectionBufferLimitBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"proxyProtocol\": {\n \"properties\": {\n \"allowRequestsWithoutProxyProtocol\": {\n \"type\": \"boolean\"\n },\n \"rules\": {\n \"items\": {\n \"properties\": {\n \"onTlvPresent\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tlvType\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"socketOptions\": {\n \"items\": {\n \"properties\": {\n \"bufValue\": {\n \"format\": \"byte\",\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"intValue\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"level\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"name\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"state\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"routeOptions\": {\n \"properties\": {\n \"maxDirectResponseBodySizeBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"mostSpecificHeaderMutationsWins\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"sslConfigurations\": {\n \"items\": {\n \"properties\": {\n \"alpnProtocols\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"disableTlsSessionResumption\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"ocspStaplePolicy\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"oneWayTls\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"parameters\": {\n \"properties\": {\n \"cipherSuites\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ecdhCurves\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maximumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minimumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"sds\": {\n \"properties\": {\n \"callCredentials\": {\n \"properties\": {\n \"fileCredentialSource\": {\n \"properties\": {\n \"header\": {\n \"type\": \"string\"\n },\n \"tokenFileName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"certificatesSecretName\": {\n \"type\": \"string\"\n },\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"targetUri\": {\n \"type\": \"string\"\n },\n \"validationContextName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sniDomains\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"sslFiles\": {\n \"properties\": {\n \"ocspStaple\": {\n \"type\": \"string\"\n },\n \"rootCa\": {\n \"type\": \"string\"\n },\n \"tlsCert\": {\n \"type\": \"string\"\n },\n \"tlsKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"transportSocketConnectTimeout\": {\n \"type\": \"string\"\n },\n \"verifySubjectAltName\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tcpListener\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"useProxyProto\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"namespacedStatuses\": {\n \"properties\": {\n \"statuses\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Proxy\",\n \"type\": \"object\"\n}", + "version": "gloo.solo.io/v1" + }, + "configuration": null, + "description": "", + "displayName": "Proxy", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz" + }, + "model": { + "category": { + "name": "Orchestration \u0026 Management" + }, + "displayName": "Gloo", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.18.0-beta18" + }, + "name": "gloo", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "API Gateway", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/RateLimitConfig.json b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/RateLimitConfig.json new file mode 100644 index 00000000000..e05b10f6308 --- /dev/null +++ b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/RateLimitConfig.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "RateLimitConfig", + "schema": "{\n \"title\": \"Rate Limit Config\",\n \"type\": \"object\",\n \"x-kubernetes-preserve-unknown-fields\": true\n}", + "version": "ratelimit.solo.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Rate Limit Config", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz" + }, + "model": { + "category": { + "name": "Orchestration \u0026 Management" + }, + "displayName": "Gloo", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.18.0-beta18" + }, + "name": "gloo", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "API Gateway", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/RouteOption.json b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/RouteOption.json new file mode 100644 index 00000000000..10157d6e827 --- /dev/null +++ b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/RouteOption.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "RouteOption", + "schema": "{\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"namespacedStatuses\": {\n \"properties\": {\n \"statuses\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"options\": {\n \"properties\": {\n \"ai\": {\n \"properties\": {\n \"backupModels\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"defaults\": {\n \"items\": {\n \"properties\": {\n \"field\": {\n \"type\": \"string\"\n },\n \"override\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"promptEnrichment\": {\n \"properties\": {\n \"append\": {\n \"items\": {\n \"properties\": {\n \"content\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"prepend\": {\n \"items\": {\n \"properties\": {\n \"content\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"promptGuard\": {\n \"properties\": {\n \"request\": {\n \"properties\": {\n \"customResponseMessage\": {\n \"type\": \"string\"\n },\n \"matches\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"response\": {\n \"properties\": {\n \"builtins\": {\n \"items\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"array\"\n },\n \"matches\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"rag\": {\n \"properties\": {\n \"datastore\": {\n \"properties\": {\n \"postgres\": {\n \"properties\": {\n \"collectionName\": {\n \"type\": \"string\"\n },\n \"connectionString\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"embedding\": {\n \"properties\": {\n \"openai\": {\n \"properties\": {\n \"authToken\": {\n \"properties\": {\n \"inline\": {\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"promptTemplate\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"semanticCache\": {\n \"properties\": {\n \"datastore\": {\n \"properties\": {\n \"redis\": {\n \"properties\": {\n \"connectionString\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"embedding\": {\n \"properties\": {\n \"openai\": {\n \"properties\": {\n \"authToken\": {\n \"properties\": {\n \"inline\": {\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"ttl\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"appendXForwardedHost\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"autoHostRewrite\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"bufferPerRoute\": {\n \"properties\": {\n \"buffer\": {\n \"properties\": {\n \"maxRequestBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"disabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"cors\": {\n \"properties\": {\n \"allowCredentials\": {\n \"type\": \"boolean\"\n },\n \"allowHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowMethods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowOrigin\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowOriginRegex\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"disableForRoute\": {\n \"type\": \"boolean\"\n },\n \"exposeHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maxAge\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"csrf\": {\n \"properties\": {\n \"additionalOrigins\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filterEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"shadowEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"dlp\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"actionType\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"customAction\": {\n \"properties\": {\n \"maskChar\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"percent\": {\n \"properties\": {\n \"value\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"regexActions\": {\n \"items\": {\n \"properties\": {\n \"regex\": {\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"keyValueAction\": {\n \"properties\": {\n \"keyToMask\": {\n \"type\": \"string\"\n },\n \"maskChar\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"percent\": {\n \"properties\": {\n \"value\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"shadow\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enabledFor\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"envoyMetadata\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"extProc\": {\n \"properties\": {\n \"disabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"overrides\": {\n \"properties\": {\n \"asyncMode\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"grpcService\": {\n \"properties\": {\n \"authority\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"extProcServerRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"initialMetadata\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"retryPolicy\": {\n \"properties\": {\n \"numRetries\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"retryBackOff\": {\n \"properties\": {\n \"baseInterval\": {\n \"type\": \"string\"\n },\n \"maxInterval\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"timeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"metadataContextNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"processingMode\": {\n \"properties\": {\n \"requestBodyMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"requestHeaderMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"requestTrailerMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseBodyMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseHeaderMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseTrailerMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"requestAttributes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"responseAttributes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"typedMetadataContextNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extauth\": {\n \"properties\": {\n \"configRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"customAuth\": {\n \"properties\": {\n \"contextExtensions\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"properties\": {\n \"configs\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"faults\": {\n \"properties\": {\n \"abort\": {\n \"properties\": {\n \"httpStatus\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"percentage\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"delay\": {\n \"properties\": {\n \"fixedDelay\": {\n \"type\": \"string\"\n },\n \"percentage\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"headerManipulation\": {\n \"properties\": {\n \"requestHeadersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requestHeadersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"responseHeadersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseHeadersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"hostRewrite\": {\n \"type\": \"string\"\n },\n \"hostRewriteHeader\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"hostRewritePathRegex\": {\n \"properties\": {\n \"pattern\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"substitution\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"idleTimeout\": {\n \"type\": \"string\"\n },\n \"jwt\": {\n \"properties\": {\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"jwtStaged\": {\n \"properties\": {\n \"afterExtAuth\": {\n \"properties\": {\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"beforeExtAuth\": {\n \"properties\": {\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"lbHash\": {\n \"properties\": {\n \"hashPolicies\": {\n \"items\": {\n \"properties\": {\n \"cookie\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"ttl\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"sourceIp\": {\n \"type\": \"boolean\"\n },\n \"terminal\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"maxStreamDuration\": {\n \"properties\": {\n \"grpcTimeoutHeaderMax\": {\n \"type\": \"string\"\n },\n \"grpcTimeoutHeaderOffset\": {\n \"type\": \"string\"\n },\n \"maxStreamDuration\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"prefixRewrite\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"rateLimitConfigs\": {\n \"properties\": {\n \"refs\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimitEarlyConfigs\": {\n \"properties\": {\n \"refs\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimitRegularConfigs\": {\n \"properties\": {\n \"refs\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"ratelimit\": {\n \"properties\": {\n \"includeVhRateLimits\": {\n \"type\": \"boolean\"\n },\n \"localRatelimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimits\": {\n \"items\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"limit\": {\n \"properties\": {\n \"dynamicMetadata\": {\n \"properties\": {\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"setActions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"ratelimitBasic\": {\n \"properties\": {\n \"anonymousLimits\": {\n \"properties\": {\n \"requestsPerUnit\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"unit\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"authorizedLimits\": {\n \"properties\": {\n \"requestsPerUnit\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"unit\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"ratelimitEarly\": {\n \"properties\": {\n \"includeVhRateLimits\": {\n \"type\": \"boolean\"\n },\n \"localRatelimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimits\": {\n \"items\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"limit\": {\n \"properties\": {\n \"dynamicMetadata\": {\n \"properties\": {\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"setActions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"ratelimitRegular\": {\n \"properties\": {\n \"includeVhRateLimits\": {\n \"type\": \"boolean\"\n },\n \"localRatelimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimits\": {\n \"items\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"limit\": {\n \"properties\": {\n \"dynamicMetadata\": {\n \"properties\": {\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"setActions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"rbac\": {\n \"properties\": {\n \"disable\": {\n \"type\": \"boolean\"\n },\n \"policies\": {\n \"additionalProperties\": {\n \"properties\": {\n \"nestedClaimDelimiter\": {\n \"type\": \"string\"\n },\n \"permissions\": {\n \"properties\": {\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pathPrefix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"principals\": {\n \"items\": {\n \"properties\": {\n \"jwtPrincipal\": {\n \"properties\": {\n \"claims\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"matcher\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"provider\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"regexRewrite\": {\n \"properties\": {\n \"pattern\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"substitution\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"retries\": {\n \"properties\": {\n \"numRetries\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"perTryTimeout\": {\n \"type\": \"string\"\n },\n \"previousPriorities\": {\n \"properties\": {\n \"updateFrequency\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"retryBackOff\": {\n \"properties\": {\n \"baseInterval\": {\n \"type\": \"string\"\n },\n \"maxInterval\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"retryOn\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"shadowing\": {\n \"properties\": {\n \"percentage\": {\n \"type\": \"number\"\n },\n \"upstream\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"stagedTransformations\": {\n \"properties\": {\n \"early\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"inheritTransformation\": {\n \"type\": \"boolean\"\n },\n \"logRequestResponseInfo\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"postRouting\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"regular\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"timeout\": {\n \"type\": \"string\"\n },\n \"tracing\": {\n \"properties\": {\n \"propagate\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"routeDescriptor\": {\n \"type\": \"string\"\n },\n \"tracePercentages\": {\n \"properties\": {\n \"clientSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"overallSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"randomSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"transformations\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upgrades\": {\n \"items\": {\n \"properties\": {\n \"connect\": {\n \"properties\": {\n \"enabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"websocket\": {\n \"properties\": {\n \"enabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"waf\": {\n \"properties\": {\n \"auditLogging\": {\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"location\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"configMapRuleSets\": {\n \"items\": {\n \"properties\": {\n \"configMapRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dataMapKeys\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"coreRuleSet\": {\n \"properties\": {\n \"customSettingsFile\": {\n \"type\": \"string\"\n },\n \"customSettingsString\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"customInterventionMessage\": {\n \"type\": \"string\"\n },\n \"disabled\": {\n \"type\": \"boolean\"\n },\n \"requestHeadersOnly\": {\n \"type\": \"boolean\"\n },\n \"responseHeadersOnly\": {\n \"type\": \"boolean\"\n },\n \"ruleSets\": {\n \"items\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n },\n \"files\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ruleStr\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"targetRefs\": {\n \"items\": {\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Route Option\",\n \"type\": \"object\"\n}", + "version": "gateway.solo.io/v1" + }, + "configuration": null, + "description": "", + "displayName": "Route Option", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz" + }, + "model": { + "category": { + "name": "Orchestration \u0026 Management" + }, + "displayName": "Gloo", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.18.0-beta18" + }, + "name": "gloo", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "API Gateway", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/RouteTable.json b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/RouteTable.json new file mode 100644 index 00000000000..1ecba877881 --- /dev/null +++ b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/RouteTable.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "RouteTable", + "schema": "{\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"namespacedStatuses\": {\n \"properties\": {\n \"statuses\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"routes\": {\n \"items\": {\n \"properties\": {\n \"delegateAction\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n },\n \"ref\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"properties\": {\n \"expressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"directResponseAction\": {\n \"properties\": {\n \"body\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"graphqlApiRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"inheritableMatchers\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"inheritablePathMatchers\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"options\": {\n \"properties\": {\n \"ai\": {\n \"properties\": {\n \"backupModels\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"defaults\": {\n \"items\": {\n \"properties\": {\n \"field\": {\n \"type\": \"string\"\n },\n \"override\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"promptEnrichment\": {\n \"properties\": {\n \"append\": {\n \"items\": {\n \"properties\": {\n \"content\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"prepend\": {\n \"items\": {\n \"properties\": {\n \"content\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"promptGuard\": {\n \"properties\": {\n \"request\": {\n \"properties\": {\n \"customResponseMessage\": {\n \"type\": \"string\"\n },\n \"matches\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"response\": {\n \"properties\": {\n \"builtins\": {\n \"items\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"array\"\n },\n \"matches\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"rag\": {\n \"properties\": {\n \"datastore\": {\n \"properties\": {\n \"postgres\": {\n \"properties\": {\n \"collectionName\": {\n \"type\": \"string\"\n },\n \"connectionString\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"embedding\": {\n \"properties\": {\n \"openai\": {\n \"properties\": {\n \"authToken\": {\n \"properties\": {\n \"inline\": {\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"promptTemplate\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"semanticCache\": {\n \"properties\": {\n \"datastore\": {\n \"properties\": {\n \"redis\": {\n \"properties\": {\n \"connectionString\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"embedding\": {\n \"properties\": {\n \"openai\": {\n \"properties\": {\n \"authToken\": {\n \"properties\": {\n \"inline\": {\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"ttl\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"appendXForwardedHost\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"autoHostRewrite\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"bufferPerRoute\": {\n \"properties\": {\n \"buffer\": {\n \"properties\": {\n \"maxRequestBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"disabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"cors\": {\n \"properties\": {\n \"allowCredentials\": {\n \"type\": \"boolean\"\n },\n \"allowHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowMethods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowOrigin\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowOriginRegex\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"disableForRoute\": {\n \"type\": \"boolean\"\n },\n \"exposeHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maxAge\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"csrf\": {\n \"properties\": {\n \"additionalOrigins\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filterEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"shadowEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"dlp\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"actionType\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"customAction\": {\n \"properties\": {\n \"maskChar\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"percent\": {\n \"properties\": {\n \"value\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"regexActions\": {\n \"items\": {\n \"properties\": {\n \"regex\": {\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"keyValueAction\": {\n \"properties\": {\n \"keyToMask\": {\n \"type\": \"string\"\n },\n \"maskChar\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"percent\": {\n \"properties\": {\n \"value\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"shadow\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enabledFor\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"envoyMetadata\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"extProc\": {\n \"properties\": {\n \"disabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"overrides\": {\n \"properties\": {\n \"asyncMode\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"grpcService\": {\n \"properties\": {\n \"authority\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"extProcServerRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"initialMetadata\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"retryPolicy\": {\n \"properties\": {\n \"numRetries\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"retryBackOff\": {\n \"properties\": {\n \"baseInterval\": {\n \"type\": \"string\"\n },\n \"maxInterval\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"timeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"metadataContextNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"processingMode\": {\n \"properties\": {\n \"requestBodyMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"requestHeaderMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"requestTrailerMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseBodyMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseHeaderMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseTrailerMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"requestAttributes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"responseAttributes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"typedMetadataContextNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extauth\": {\n \"properties\": {\n \"configRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"customAuth\": {\n \"properties\": {\n \"contextExtensions\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"properties\": {\n \"configs\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"faults\": {\n \"properties\": {\n \"abort\": {\n \"properties\": {\n \"httpStatus\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"percentage\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"delay\": {\n \"properties\": {\n \"fixedDelay\": {\n \"type\": \"string\"\n },\n \"percentage\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"headerManipulation\": {\n \"properties\": {\n \"requestHeadersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requestHeadersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"responseHeadersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseHeadersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"hostRewrite\": {\n \"type\": \"string\"\n },\n \"hostRewriteHeader\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"hostRewritePathRegex\": {\n \"properties\": {\n \"pattern\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"substitution\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"idleTimeout\": {\n \"type\": \"string\"\n },\n \"jwt\": {\n \"properties\": {\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"jwtStaged\": {\n \"properties\": {\n \"afterExtAuth\": {\n \"properties\": {\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"beforeExtAuth\": {\n \"properties\": {\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"lbHash\": {\n \"properties\": {\n \"hashPolicies\": {\n \"items\": {\n \"properties\": {\n \"cookie\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"ttl\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"sourceIp\": {\n \"type\": \"boolean\"\n },\n \"terminal\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"maxStreamDuration\": {\n \"properties\": {\n \"grpcTimeoutHeaderMax\": {\n \"type\": \"string\"\n },\n \"grpcTimeoutHeaderOffset\": {\n \"type\": \"string\"\n },\n \"maxStreamDuration\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"prefixRewrite\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"rateLimitConfigs\": {\n \"properties\": {\n \"refs\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimitEarlyConfigs\": {\n \"properties\": {\n \"refs\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimitRegularConfigs\": {\n \"properties\": {\n \"refs\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"ratelimit\": {\n \"properties\": {\n \"includeVhRateLimits\": {\n \"type\": \"boolean\"\n },\n \"localRatelimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimits\": {\n \"items\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"limit\": {\n \"properties\": {\n \"dynamicMetadata\": {\n \"properties\": {\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"setActions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"ratelimitBasic\": {\n \"properties\": {\n \"anonymousLimits\": {\n \"properties\": {\n \"requestsPerUnit\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"unit\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"authorizedLimits\": {\n \"properties\": {\n \"requestsPerUnit\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"unit\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"ratelimitEarly\": {\n \"properties\": {\n \"includeVhRateLimits\": {\n \"type\": \"boolean\"\n },\n \"localRatelimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimits\": {\n \"items\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"limit\": {\n \"properties\": {\n \"dynamicMetadata\": {\n \"properties\": {\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"setActions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"ratelimitRegular\": {\n \"properties\": {\n \"includeVhRateLimits\": {\n \"type\": \"boolean\"\n },\n \"localRatelimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimits\": {\n \"items\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"limit\": {\n \"properties\": {\n \"dynamicMetadata\": {\n \"properties\": {\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"setActions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"rbac\": {\n \"properties\": {\n \"disable\": {\n \"type\": \"boolean\"\n },\n \"policies\": {\n \"additionalProperties\": {\n \"properties\": {\n \"nestedClaimDelimiter\": {\n \"type\": \"string\"\n },\n \"permissions\": {\n \"properties\": {\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pathPrefix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"principals\": {\n \"items\": {\n \"properties\": {\n \"jwtPrincipal\": {\n \"properties\": {\n \"claims\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"matcher\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"provider\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"regexRewrite\": {\n \"properties\": {\n \"pattern\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"substitution\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"retries\": {\n \"properties\": {\n \"numRetries\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"perTryTimeout\": {\n \"type\": \"string\"\n },\n \"previousPriorities\": {\n \"properties\": {\n \"updateFrequency\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"retryBackOff\": {\n \"properties\": {\n \"baseInterval\": {\n \"type\": \"string\"\n },\n \"maxInterval\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"retryOn\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"shadowing\": {\n \"properties\": {\n \"percentage\": {\n \"type\": \"number\"\n },\n \"upstream\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"stagedTransformations\": {\n \"properties\": {\n \"early\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"inheritTransformation\": {\n \"type\": \"boolean\"\n },\n \"logRequestResponseInfo\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"postRouting\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"regular\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"timeout\": {\n \"type\": \"string\"\n },\n \"tracing\": {\n \"properties\": {\n \"propagate\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"routeDescriptor\": {\n \"type\": \"string\"\n },\n \"tracePercentages\": {\n \"properties\": {\n \"clientSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"overallSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"randomSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"transformations\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upgrades\": {\n \"items\": {\n \"properties\": {\n \"connect\": {\n \"properties\": {\n \"enabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"websocket\": {\n \"properties\": {\n \"enabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"waf\": {\n \"properties\": {\n \"auditLogging\": {\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"location\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"configMapRuleSets\": {\n \"items\": {\n \"properties\": {\n \"configMapRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dataMapKeys\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"coreRuleSet\": {\n \"properties\": {\n \"customSettingsFile\": {\n \"type\": \"string\"\n },\n \"customSettingsString\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"customInterventionMessage\": {\n \"type\": \"string\"\n },\n \"disabled\": {\n \"type\": \"boolean\"\n },\n \"requestHeadersOnly\": {\n \"type\": \"boolean\"\n },\n \"responseHeadersOnly\": {\n \"type\": \"boolean\"\n },\n \"ruleSets\": {\n \"items\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n },\n \"files\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ruleStr\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"optionsConfigRefs\": {\n \"properties\": {\n \"delegateOptions\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"redirectAction\": {\n \"properties\": {\n \"hostRedirect\": {\n \"type\": \"string\"\n },\n \"httpsRedirect\": {\n \"type\": \"boolean\"\n },\n \"pathRedirect\": {\n \"type\": \"string\"\n },\n \"portRedirect\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"prefixRewrite\": {\n \"type\": \"string\"\n },\n \"regexRewrite\": {\n \"properties\": {\n \"pattern\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"substitution\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"responseCode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"stripQuery\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"routeAction\": {\n \"properties\": {\n \"clusterHeader\": {\n \"type\": \"string\"\n },\n \"dynamicForwardProxy\": {\n \"properties\": {\n \"autoHostRewriteHeader\": {\n \"type\": \"string\"\n },\n \"hostRewrite\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"multi\": {\n \"properties\": {\n \"destinations\": {\n \"items\": {\n \"properties\": {\n \"destination\": {\n \"properties\": {\n \"consul\": {\n \"properties\": {\n \"dataCenters\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"serviceName\": {\n \"type\": \"string\"\n },\n \"tags\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"destinationSpec\": {\n \"properties\": {\n \"aws\": {\n \"properties\": {\n \"invocationStyle\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"logicalName\": {\n \"type\": \"string\"\n },\n \"requestTransformation\": {\n \"type\": \"boolean\"\n },\n \"responseTransformation\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsAlb\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsApiGateway\": {\n \"type\": \"boolean\"\n },\n \"wrapAsApiGateway\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"azure\": {\n \"properties\": {\n \"functionName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"grpc\": {\n \"properties\": {\n \"function\": {\n \"type\": \"string\"\n },\n \"package\": {\n \"type\": \"string\"\n },\n \"parameters\": {\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"rest\": {\n \"properties\": {\n \"functionName\": {\n \"type\": \"string\"\n },\n \"parameters\": {\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"kube\": {\n \"properties\": {\n \"port\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"ref\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"subset\": {\n \"properties\": {\n \"values\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upstream\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"options\": {\n \"properties\": {\n \"bufferPerRoute\": {\n \"properties\": {\n \"buffer\": {\n \"properties\": {\n \"maxRequestBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"disabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"csrf\": {\n \"properties\": {\n \"additionalOrigins\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filterEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"shadowEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extauth\": {\n \"properties\": {\n \"configRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"customAuth\": {\n \"properties\": {\n \"contextExtensions\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"properties\": {\n \"configs\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"headerManipulation\": {\n \"properties\": {\n \"requestHeadersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requestHeadersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"responseHeadersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseHeadersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"stagedTransformations\": {\n \"properties\": {\n \"early\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"inheritTransformation\": {\n \"type\": \"boolean\"\n },\n \"logRequestResponseInfo\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"postRouting\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"regular\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"transformations\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"weight\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"single\": {\n \"properties\": {\n \"consul\": {\n \"properties\": {\n \"dataCenters\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"serviceName\": {\n \"type\": \"string\"\n },\n \"tags\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"destinationSpec\": {\n \"properties\": {\n \"aws\": {\n \"properties\": {\n \"invocationStyle\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"logicalName\": {\n \"type\": \"string\"\n },\n \"requestTransformation\": {\n \"type\": \"boolean\"\n },\n \"responseTransformation\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsAlb\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsApiGateway\": {\n \"type\": \"boolean\"\n },\n \"wrapAsApiGateway\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"azure\": {\n \"properties\": {\n \"functionName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"grpc\": {\n \"properties\": {\n \"function\": {\n \"type\": \"string\"\n },\n \"package\": {\n \"type\": \"string\"\n },\n \"parameters\": {\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"rest\": {\n \"properties\": {\n \"functionName\": {\n \"type\": \"string\"\n },\n \"parameters\": {\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"kube\": {\n \"properties\": {\n \"port\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"ref\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"subset\": {\n \"properties\": {\n \"values\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upstream\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upstreamGroup\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"weight\": {\n \"maximum\": 2147483647,\n \"minimum\": -2147483648,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Route Table\",\n \"type\": \"object\"\n}", + "version": "gateway.solo.io/v1" + }, + "configuration": null, + "description": "", + "displayName": "Route Table", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz" + }, + "model": { + "category": { + "name": "Orchestration \u0026 Management" + }, + "displayName": "Gloo", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.18.0-beta18" + }, + "name": "gloo", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "API Gateway", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/Settings.json b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/Settings.json new file mode 100644 index 00000000000..a3e984bb964 --- /dev/null +++ b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/Settings.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "Settings", + "schema": "{\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"cachingServer\": {\n \"properties\": {\n \"allowedVaryHeaders\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"cachingServiceRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"maxPayloadSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"timeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"consoleOptions\": {\n \"properties\": {\n \"apiExplorerEnabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"readOnly\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"consul\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"caFile\": {\n \"type\": \"string\"\n },\n \"caPath\": {\n \"type\": \"string\"\n },\n \"certFile\": {\n \"type\": \"string\"\n },\n \"datacenter\": {\n \"type\": \"string\"\n },\n \"dnsAddress\": {\n \"type\": \"string\"\n },\n \"dnsPollingInterval\": {\n \"type\": \"string\"\n },\n \"httpAddress\": {\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"type\": \"string\"\n },\n \"password\": {\n \"type\": \"string\"\n },\n \"serviceDiscovery\": {\n \"properties\": {\n \"dataCenters\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"token\": {\n \"type\": \"string\"\n },\n \"username\": {\n \"type\": \"string\"\n },\n \"waitTime\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"consulDiscovery\": {\n \"properties\": {\n \"consistencyMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"edsBlockingQueries\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"queryOptions\": {\n \"properties\": {\n \"useCache\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"rootCa\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceTagsAllowlist\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"splitTlsServices\": {\n \"type\": \"boolean\"\n },\n \"tlsTagName\": {\n \"type\": \"string\"\n },\n \"useTlsTagging\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"consulKvArtifactSource\": {\n \"properties\": {\n \"rootKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"consulKvSource\": {\n \"properties\": {\n \"rootKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"devMode\": {\n \"type\": \"boolean\"\n },\n \"directoryArtifactSource\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"directoryConfigSource\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"directorySecretSource\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"discovery\": {\n \"properties\": {\n \"fdsMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"fdsOptions\": {\n \"properties\": {\n \"graphqlEnabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"udsOptions\": {\n \"properties\": {\n \"enabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"watchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"discoveryNamespace\": {\n \"type\": \"string\"\n },\n \"extProc\": {\n \"properties\": {\n \"allowModeOverride\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"asyncMode\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"disableClearRouteCache\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"failureModeAllow\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"filterMetadata\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"filterStage\": {\n \"properties\": {\n \"predicate\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"stage\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"forwardRules\": {\n \"properties\": {\n \"allowedHeaders\": {\n \"properties\": {\n \"patterns\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"disallowedHeaders\": {\n \"properties\": {\n \"patterns\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcService\": {\n \"properties\": {\n \"authority\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"extProcServerRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"initialMetadata\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"retryPolicy\": {\n \"properties\": {\n \"numRetries\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"retryBackOff\": {\n \"properties\": {\n \"baseInterval\": {\n \"type\": \"string\"\n },\n \"maxInterval\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"timeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"maxMessageTimeout\": {\n \"type\": \"string\"\n },\n \"messageTimeout\": {\n \"type\": \"string\"\n },\n \"metadataContextNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"mutationRules\": {\n \"properties\": {\n \"allowAllRouting\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"allowEnvoy\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"allowExpression\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disallowAll\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"disallowExpression\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disallowIsError\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"disallowSystem\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"processingMode\": {\n \"properties\": {\n \"requestBodyMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"requestHeaderMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"requestTrailerMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseBodyMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseHeaderMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseTrailerMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"requestAttributes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"responseAttributes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"statPrefix\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"typedMetadataContextNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"extauth\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"extauthzServerRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"failureModeAllow\": {\n \"type\": \"boolean\"\n },\n \"grpcService\": {\n \"properties\": {\n \"authority\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"httpService\": {\n \"properties\": {\n \"pathPrefix\": {\n \"type\": \"string\"\n },\n \"request\": {\n \"properties\": {\n \"allowedHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowedHeadersRegex\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"headersToAdd\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"response\": {\n \"properties\": {\n \"allowedClientHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowedUpstreamHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowedUpstreamHeadersToAppend\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"requestBody\": {\n \"properties\": {\n \"allowPartialMessage\": {\n \"type\": \"boolean\"\n },\n \"maxRequestBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"packAsBytes\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTimeout\": {\n \"type\": \"string\"\n },\n \"statPrefix\": {\n \"type\": \"string\"\n },\n \"statusOnError\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"transportApiVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"userIdHeader\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"properties\": {\n \"configs\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"gateway\": {\n \"properties\": {\n \"alwaysSortRouteTableRoutes\": {\n \"type\": \"boolean\"\n },\n \"compressedProxySpec\": {\n \"type\": \"boolean\"\n },\n \"enableGatewayController\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"isolateVirtualHostsBySslConfig\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"persistProxySpec\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"readGatewaysFromAllNamespaces\": {\n \"type\": \"boolean\"\n },\n \"translateEmptyGateways\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"validation\": {\n \"properties\": {\n \"allowWarnings\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"alwaysAccept\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"disableTransformationValidation\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"ignoreGlooValidationFailure\": {\n \"type\": \"boolean\"\n },\n \"proxyValidationServerAddr\": {\n \"type\": \"string\"\n },\n \"serverEnabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"validationServerGrpcMaxSizeBytes\": {\n \"maximum\": 2147483647,\n \"minimum\": -2147483648,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"validationWebhookTlsCert\": {\n \"type\": \"string\"\n },\n \"validationWebhookTlsKey\": {\n \"type\": \"string\"\n },\n \"warnRouteShortCircuiting\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"validationServerAddr\": {\n \"type\": \"string\"\n },\n \"virtualServiceOptions\": {\n \"properties\": {\n \"oneWayTls\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"gloo\": {\n \"properties\": {\n \"awsOptions\": {\n \"properties\": {\n \"credentialRefreshDelay\": {\n \"type\": \"string\"\n },\n \"enableCredentialsDiscovey\": {\n \"type\": \"boolean\"\n },\n \"fallbackToFirstFunction\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"propagateOriginalRouting\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"serviceAccountCredentials\": {\n \"properties\": {\n \"cluster\": {\n \"type\": \"string\"\n },\n \"region\": {\n \"type\": \"string\"\n },\n \"timeout\": {\n \"type\": \"string\"\n },\n \"uri\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"circuitBreakers\": {\n \"properties\": {\n \"maxConnections\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxPendingRequests\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxRequests\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxRetries\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"disableGrpcWeb\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"disableKubernetesDestinations\": {\n \"type\": \"boolean\"\n },\n \"disableProxyGarbageCollection\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"enableRestEds\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"endpointsWarmingTimeout\": {\n \"type\": \"string\"\n },\n \"failoverUpstreamDnsPollingInterval\": {\n \"type\": \"string\"\n },\n \"invalidConfigPolicy\": {\n \"properties\": {\n \"invalidRouteResponseBody\": {\n \"type\": \"string\"\n },\n \"invalidRouteResponseCode\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"replaceInvalidRoutes\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"istioOptions\": {\n \"properties\": {\n \"appendXForwardedHost\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"enableAutoMtls\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"enableIntegration\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logTransformationRequestResponseInfo\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"proxyDebugBindAddr\": {\n \"type\": \"string\"\n },\n \"regexMaxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"removeUnusedFilters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"restXdsBindAddr\": {\n \"type\": \"string\"\n },\n \"transformationEscapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"validationBindAddr\": {\n \"type\": \"string\"\n },\n \"xdsBindAddr\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"graphqlOptions\": {\n \"properties\": {\n \"schemaChangeValidationOptions\": {\n \"properties\": {\n \"processingRules\": {\n \"items\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"array\"\n },\n \"rejectBreakingChanges\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"knative\": {\n \"properties\": {\n \"clusterIngressProxyAddress\": {\n \"type\": \"string\"\n },\n \"knativeExternalProxyAddress\": {\n \"type\": \"string\"\n },\n \"knativeInternalProxyAddress\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"kubernetes\": {\n \"properties\": {\n \"rateLimits\": {\n \"properties\": {\n \"QPS\": {\n \"type\": \"number\"\n },\n \"burst\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"kubernetesArtifactSource\": {\n \"type\": \"object\"\n },\n \"kubernetesConfigSource\": {\n \"type\": \"object\"\n },\n \"kubernetesSecretSource\": {\n \"type\": \"object\"\n },\n \"linkerd\": {\n \"type\": \"boolean\"\n },\n \"namedExtauth\": {\n \"additionalProperties\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"extauthzServerRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"failureModeAllow\": {\n \"type\": \"boolean\"\n },\n \"grpcService\": {\n \"properties\": {\n \"authority\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"httpService\": {\n \"properties\": {\n \"pathPrefix\": {\n \"type\": \"string\"\n },\n \"request\": {\n \"properties\": {\n \"allowedHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowedHeadersRegex\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"headersToAdd\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"response\": {\n \"properties\": {\n \"allowedClientHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowedUpstreamHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowedUpstreamHeadersToAppend\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"requestBody\": {\n \"properties\": {\n \"allowPartialMessage\": {\n \"type\": \"boolean\"\n },\n \"maxRequestBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"packAsBytes\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTimeout\": {\n \"type\": \"string\"\n },\n \"statPrefix\": {\n \"type\": \"string\"\n },\n \"statusOnError\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"transportApiVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"userIdHeader\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"namespacedStatuses\": {\n \"properties\": {\n \"statuses\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"observabilityOptions\": {\n \"properties\": {\n \"configStatusMetricLabels\": {\n \"additionalProperties\": {\n \"properties\": {\n \"labelToPath\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"grafanaIntegration\": {\n \"properties\": {\n \"dashboardPrefix\": {\n \"type\": \"string\"\n },\n \"defaultDashboardFolderId\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"extraMetricQueryParameters\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"ratelimit\": {\n \"properties\": {\n \"descriptors\": {\n \"items\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"setDescriptors\": {\n \"items\": {\n \"properties\": {\n \"alwaysApply\": {\n \"type\": \"boolean\"\n },\n \"rateLimit\": {\n \"properties\": {\n \"requestsPerUnit\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"unit\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"simpleDescriptors\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"ratelimitServer\": {\n \"properties\": {\n \"denyOnFail\": {\n \"type\": \"boolean\"\n },\n \"enableXRatelimitHeaders\": {\n \"type\": \"boolean\"\n },\n \"grpcService\": {\n \"properties\": {\n \"authority\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimitBeforeAuth\": {\n \"type\": \"boolean\"\n },\n \"ratelimitServerRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTimeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"rbac\": {\n \"properties\": {\n \"requireRbac\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"refreshRate\": {\n \"type\": \"string\"\n },\n \"secretOptions\": {\n \"properties\": {\n \"sources\": {\n \"items\": {\n \"properties\": {\n \"directory\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"kubernetes\": {\n \"type\": \"object\"\n },\n \"vault\": {\n \"properties\": {\n \"accessToken\": {\n \"type\": \"string\"\n },\n \"address\": {\n \"type\": \"string\"\n },\n \"aws\": {\n \"properties\": {\n \"accessKeyId\": {\n \"type\": \"string\"\n },\n \"iamServerIdHeader\": {\n \"type\": \"string\"\n },\n \"leaseIncrement\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"mountPath\": {\n \"type\": \"string\"\n },\n \"region\": {\n \"type\": \"string\"\n },\n \"secretAccessKey\": {\n \"type\": \"string\"\n },\n \"sessionToken\": {\n \"type\": \"string\"\n },\n \"vaultRole\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"caCert\": {\n \"type\": \"string\"\n },\n \"caPath\": {\n \"type\": \"string\"\n },\n \"clientCert\": {\n \"type\": \"string\"\n },\n \"clientKey\": {\n \"type\": \"string\"\n },\n \"insecure\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"pathPrefix\": {\n \"type\": \"string\"\n },\n \"rootKey\": {\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"properties\": {\n \"caCert\": {\n \"type\": \"string\"\n },\n \"caPath\": {\n \"type\": \"string\"\n },\n \"clientCert\": {\n \"type\": \"string\"\n },\n \"clientKey\": {\n \"type\": \"string\"\n },\n \"insecure\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"tlsServerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tlsServerName\": {\n \"type\": \"string\"\n },\n \"token\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"upstreamOptions\": {\n \"properties\": {\n \"globalAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"sslParameters\": {\n \"properties\": {\n \"cipherSuites\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ecdhCurves\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maximumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minimumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"vaultSecretSource\": {\n \"properties\": {\n \"accessToken\": {\n \"type\": \"string\"\n },\n \"address\": {\n \"type\": \"string\"\n },\n \"aws\": {\n \"properties\": {\n \"accessKeyId\": {\n \"type\": \"string\"\n },\n \"iamServerIdHeader\": {\n \"type\": \"string\"\n },\n \"leaseIncrement\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"mountPath\": {\n \"type\": \"string\"\n },\n \"region\": {\n \"type\": \"string\"\n },\n \"secretAccessKey\": {\n \"type\": \"string\"\n },\n \"sessionToken\": {\n \"type\": \"string\"\n },\n \"vaultRole\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"caCert\": {\n \"type\": \"string\"\n },\n \"caPath\": {\n \"type\": \"string\"\n },\n \"clientCert\": {\n \"type\": \"string\"\n },\n \"clientKey\": {\n \"type\": \"string\"\n },\n \"insecure\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"pathPrefix\": {\n \"type\": \"string\"\n },\n \"rootKey\": {\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"properties\": {\n \"caCert\": {\n \"type\": \"string\"\n },\n \"caPath\": {\n \"type\": \"string\"\n },\n \"clientCert\": {\n \"type\": \"string\"\n },\n \"clientKey\": {\n \"type\": \"string\"\n },\n \"insecure\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"tlsServerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tlsServerName\": {\n \"type\": \"string\"\n },\n \"token\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"watchNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Settings\",\n \"type\": \"object\"\n}", + "version": "gloo.solo.io/v1" + }, + "configuration": null, + "description": "", + "displayName": "Settings", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz" + }, + "model": { + "category": { + "name": "Orchestration \u0026 Management" + }, + "displayName": "Gloo", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.18.0-beta18" + }, + "name": "gloo", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "API Gateway", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/Upstream.json b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/Upstream.json new file mode 100644 index 00000000000..2fcbe067630 --- /dev/null +++ b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/Upstream.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "Upstream", + "schema": "{\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"ai\": {\n \"properties\": {\n \"anthropic\": {\n \"properties\": {\n \"authToken\": {\n \"properties\": {\n \"inline\": {\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"customHost\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"version\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"mistral\": {\n \"properties\": {\n \"authToken\": {\n \"properties\": {\n \"inline\": {\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"customHost\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"openai\": {\n \"properties\": {\n \"authToken\": {\n \"properties\": {\n \"inline\": {\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"customHost\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"aws\": {\n \"properties\": {\n \"awsAccountId\": {\n \"type\": \"string\"\n },\n \"destinationOverrides\": {\n \"properties\": {\n \"invocationStyle\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"logicalName\": {\n \"type\": \"string\"\n },\n \"requestTransformation\": {\n \"type\": \"boolean\"\n },\n \"responseTransformation\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsAlb\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsApiGateway\": {\n \"type\": \"boolean\"\n },\n \"wrapAsApiGateway\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"disableRoleChaining\": {\n \"type\": \"boolean\"\n },\n \"lambdaFunctions\": {\n \"items\": {\n \"properties\": {\n \"lambdaFunctionName\": {\n \"type\": \"string\"\n },\n \"logicalName\": {\n \"type\": \"string\"\n },\n \"qualifier\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"region\": {\n \"type\": \"string\"\n },\n \"roleArn\": {\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"awsEc2\": {\n \"properties\": {\n \"filters\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"kvPair\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"port\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"publicIp\": {\n \"type\": \"boolean\"\n },\n \"region\": {\n \"type\": \"string\"\n },\n \"roleArn\": {\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"azure\": {\n \"properties\": {\n \"functionAppName\": {\n \"type\": \"string\"\n },\n \"functions\": {\n \"items\": {\n \"properties\": {\n \"authLevel\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"functionName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"circuitBreakers\": {\n \"properties\": {\n \"maxConnections\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxPendingRequests\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxRequests\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"maxRetries\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"connectionConfig\": {\n \"properties\": {\n \"commonHttpProtocolOptions\": {\n \"properties\": {\n \"headersWithUnderscoresAction\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"idleTimeout\": {\n \"type\": \"string\"\n },\n \"maxHeadersCount\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"maxStreamDuration\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"connectTimeout\": {\n \"type\": \"string\"\n },\n \"http1ProtocolOptions\": {\n \"properties\": {\n \"enableTrailers\": {\n \"type\": \"boolean\"\n },\n \"overrideStreamErrorOnInvalidHttpMessage\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"preserveCaseHeaderKeyFormat\": {\n \"type\": \"boolean\"\n },\n \"properCaseHeaderKeyFormat\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"maxRequestsPerConnection\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"perConnectionBufferLimitBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"tcpKeepalive\": {\n \"properties\": {\n \"keepaliveInterval\": {\n \"type\": \"string\"\n },\n \"keepaliveProbes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"keepaliveTime\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"consul\": {\n \"properties\": {\n \"connectEnabled\": {\n \"type\": \"boolean\"\n },\n \"consistencyMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"dataCenters\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"instanceBlacklistTags\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"instanceTags\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"queryOptions\": {\n \"properties\": {\n \"useCache\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceName\": {\n \"type\": \"string\"\n },\n \"serviceSpec\": {\n \"properties\": {\n \"graphql\": {\n \"properties\": {\n \"endpoint\": {\n \"properties\": {\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpc\": {\n \"properties\": {\n \"descriptors\": {\n \"format\": \"byte\",\n \"type\": \"string\"\n },\n \"grpcServices\": {\n \"items\": {\n \"properties\": {\n \"functionNames\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"packageName\": {\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcJsonTranscoder\": {\n \"properties\": {\n \"autoMapping\": {\n \"type\": \"boolean\"\n },\n \"convertGrpcStatus\": {\n \"type\": \"boolean\"\n },\n \"ignoreUnknownQueryParameters\": {\n \"type\": \"boolean\"\n },\n \"ignoredQueryParameters\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"matchIncomingRequestRoute\": {\n \"type\": \"boolean\"\n },\n \"printOptions\": {\n \"properties\": {\n \"addWhitespace\": {\n \"type\": \"boolean\"\n },\n \"alwaysPrintEnumsAsInts\": {\n \"type\": \"boolean\"\n },\n \"alwaysPrintPrimitiveFields\": {\n \"type\": \"boolean\"\n },\n \"preserveProtoFieldNames\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"protoDescriptor\": {\n \"type\": \"string\"\n },\n \"protoDescriptorBin\": {\n \"format\": \"byte\",\n \"type\": \"string\"\n },\n \"protoDescriptorConfigMap\": {\n \"properties\": {\n \"configMapRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"services\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"rest\": {\n \"properties\": {\n \"swaggerInfo\": {\n \"properties\": {\n \"inline\": {\n \"type\": \"string\"\n },\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"transformations\": {\n \"additionalProperties\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceTags\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"subsetTags\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"disableIstioAutoMtls\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"discoveryMetadata\": {\n \"properties\": {\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsRefreshRate\": {\n \"type\": \"string\"\n },\n \"failover\": {\n \"properties\": {\n \"policy\": {\n \"properties\": {\n \"overprovisioningFactor\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"prioritizedLocalities\": {\n \"items\": {\n \"properties\": {\n \"localityEndpoints\": {\n \"items\": {\n \"properties\": {\n \"lbEndpoints\": {\n \"items\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"healthCheckConfig\": {\n \"properties\": {\n \"hostname\": {\n \"type\": \"string\"\n },\n \"method\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"portValue\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"loadBalancingWeight\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"metadata\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"port\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"upstreamSslConfig\": {\n \"properties\": {\n \"allowRenegotiation\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"alpnProtocols\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"parameters\": {\n \"properties\": {\n \"cipherSuites\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ecdhCurves\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maximumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minimumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"sds\": {\n \"properties\": {\n \"callCredentials\": {\n \"properties\": {\n \"fileCredentialSource\": {\n \"properties\": {\n \"header\": {\n \"type\": \"string\"\n },\n \"tokenFileName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"certificatesSecretName\": {\n \"type\": \"string\"\n },\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"targetUri\": {\n \"type\": \"string\"\n },\n \"validationContextName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sni\": {\n \"type\": \"string\"\n },\n \"sslFiles\": {\n \"properties\": {\n \"ocspStaple\": {\n \"type\": \"string\"\n },\n \"rootCa\": {\n \"type\": \"string\"\n },\n \"tlsCert\": {\n \"type\": \"string\"\n },\n \"tlsKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"verifySubjectAltName\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"loadBalancingWeight\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"locality\": {\n \"properties\": {\n \"region\": {\n \"type\": \"string\"\n },\n \"subZone\": {\n \"type\": \"string\"\n },\n \"zone\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"gcp\": {\n \"properties\": {\n \"audience\": {\n \"type\": \"string\"\n },\n \"host\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"healthChecks\": {\n \"items\": {\n \"properties\": {\n \"alwaysLogHealthCheckFailures\": {\n \"type\": \"boolean\"\n },\n \"customHealthCheck\": {\n \"properties\": {\n \"config\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"typedConfig\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"eventLogPath\": {\n \"type\": \"string\"\n },\n \"grpcHealthCheck\": {\n \"properties\": {\n \"authority\": {\n \"type\": \"string\"\n },\n \"initialMetadata\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"serviceName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"healthyEdgeInterval\": {\n \"type\": \"string\"\n },\n \"healthyThreshold\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"httpHealthCheck\": {\n \"properties\": {\n \"expectedStatuses\": {\n \"items\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"host\": {\n \"type\": \"string\"\n },\n \"method\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"requestHeadersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requestHeadersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"responseAssertions\": {\n \"properties\": {\n \"noMatchHealth\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseMatchers\": {\n \"items\": {\n \"properties\": {\n \"matchHealth\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseMatch\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"jsonKey\": {\n \"properties\": {\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceName\": {\n \"type\": \"string\"\n },\n \"useHttp2\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"initialJitter\": {\n \"type\": \"string\"\n },\n \"interval\": {\n \"type\": \"string\"\n },\n \"intervalJitter\": {\n \"type\": \"string\"\n },\n \"intervalJitterPercent\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"noTrafficInterval\": {\n \"type\": \"string\"\n },\n \"reuseConnection\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"tcpHealthCheck\": {\n \"properties\": {\n \"receive\": {\n \"items\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"send\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"timeout\": {\n \"type\": \"string\"\n },\n \"unhealthyEdgeInterval\": {\n \"type\": \"string\"\n },\n \"unhealthyInterval\": {\n \"type\": \"string\"\n },\n \"unhealthyThreshold\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"httpConnectHeaders\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"httpConnectSslConfig\": {\n \"properties\": {\n \"allowRenegotiation\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"alpnProtocols\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"parameters\": {\n \"properties\": {\n \"cipherSuites\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ecdhCurves\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maximumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minimumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"sds\": {\n \"properties\": {\n \"callCredentials\": {\n \"properties\": {\n \"fileCredentialSource\": {\n \"properties\": {\n \"header\": {\n \"type\": \"string\"\n },\n \"tokenFileName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"certificatesSecretName\": {\n \"type\": \"string\"\n },\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"targetUri\": {\n \"type\": \"string\"\n },\n \"validationContextName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sni\": {\n \"type\": \"string\"\n },\n \"sslFiles\": {\n \"properties\": {\n \"ocspStaple\": {\n \"type\": \"string\"\n },\n \"rootCa\": {\n \"type\": \"string\"\n },\n \"tlsCert\": {\n \"type\": \"string\"\n },\n \"tlsKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"verifySubjectAltName\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpProxyHostname\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"ignoreHealthOnHostRemoval\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"initialConnectionWindowSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"initialStreamWindowSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"kube\": {\n \"properties\": {\n \"selector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"serviceName\": {\n \"type\": \"string\"\n },\n \"serviceNamespace\": {\n \"type\": \"string\"\n },\n \"servicePort\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"serviceSpec\": {\n \"properties\": {\n \"graphql\": {\n \"properties\": {\n \"endpoint\": {\n \"properties\": {\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpc\": {\n \"properties\": {\n \"descriptors\": {\n \"format\": \"byte\",\n \"type\": \"string\"\n },\n \"grpcServices\": {\n \"items\": {\n \"properties\": {\n \"functionNames\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"packageName\": {\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcJsonTranscoder\": {\n \"properties\": {\n \"autoMapping\": {\n \"type\": \"boolean\"\n },\n \"convertGrpcStatus\": {\n \"type\": \"boolean\"\n },\n \"ignoreUnknownQueryParameters\": {\n \"type\": \"boolean\"\n },\n \"ignoredQueryParameters\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"matchIncomingRequestRoute\": {\n \"type\": \"boolean\"\n },\n \"printOptions\": {\n \"properties\": {\n \"addWhitespace\": {\n \"type\": \"boolean\"\n },\n \"alwaysPrintEnumsAsInts\": {\n \"type\": \"boolean\"\n },\n \"alwaysPrintPrimitiveFields\": {\n \"type\": \"boolean\"\n },\n \"preserveProtoFieldNames\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"protoDescriptor\": {\n \"type\": \"string\"\n },\n \"protoDescriptorBin\": {\n \"format\": \"byte\",\n \"type\": \"string\"\n },\n \"protoDescriptorConfigMap\": {\n \"properties\": {\n \"configMapRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"services\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"rest\": {\n \"properties\": {\n \"swaggerInfo\": {\n \"properties\": {\n \"inline\": {\n \"type\": \"string\"\n },\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"transformations\": {\n \"additionalProperties\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"subsetSpec\": {\n \"properties\": {\n \"defaultSubset\": {\n \"properties\": {\n \"values\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fallbackPolicy\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"selectors\": {\n \"items\": {\n \"properties\": {\n \"keys\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"singleHostPerSubset\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"loadBalancerConfig\": {\n \"properties\": {\n \"healthyPanicThreshold\": {\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"leastRequest\": {\n \"properties\": {\n \"choiceCount\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"slowStartConfig\": {\n \"properties\": {\n \"aggression\": {\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"minWeightPercent\": {\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"slowStartWindow\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"localityWeightedLbConfig\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"maglev\": {\n \"type\": \"object\"\n },\n \"random\": {\n \"type\": \"object\"\n },\n \"ringHash\": {\n \"properties\": {\n \"ringHashConfig\": {\n \"properties\": {\n \"maximumRingSize\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minimumRingSize\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"roundRobin\": {\n \"properties\": {\n \"slowStartConfig\": {\n \"properties\": {\n \"aggression\": {\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"minWeightPercent\": {\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"slowStartWindow\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"updateMergeWindow\": {\n \"type\": \"string\"\n },\n \"useHostnameForHashing\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"maxConcurrentStreams\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"namespacedStatuses\": {\n \"properties\": {\n \"statuses\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"outlierDetection\": {\n \"properties\": {\n \"baseEjectionTime\": {\n \"type\": \"string\"\n },\n \"consecutive5xx\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"consecutiveGatewayFailure\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"consecutiveLocalOriginFailure\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"enforcingConsecutive5xx\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"enforcingConsecutiveGatewayFailure\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"enforcingConsecutiveLocalOriginFailure\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"enforcingLocalOriginSuccessRate\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"enforcingSuccessRate\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"interval\": {\n \"type\": \"string\"\n },\n \"maxEjectionPercent\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"splitExternalLocalOriginErrors\": {\n \"type\": \"boolean\"\n },\n \"successRateMinimumHosts\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"successRateRequestVolume\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"successRateStdevFactor\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"overrideStreamErrorOnInvalidHttpMessage\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"pipe\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"serviceSpec\": {\n \"properties\": {\n \"graphql\": {\n \"properties\": {\n \"endpoint\": {\n \"properties\": {\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpc\": {\n \"properties\": {\n \"descriptors\": {\n \"format\": \"byte\",\n \"type\": \"string\"\n },\n \"grpcServices\": {\n \"items\": {\n \"properties\": {\n \"functionNames\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"packageName\": {\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcJsonTranscoder\": {\n \"properties\": {\n \"autoMapping\": {\n \"type\": \"boolean\"\n },\n \"convertGrpcStatus\": {\n \"type\": \"boolean\"\n },\n \"ignoreUnknownQueryParameters\": {\n \"type\": \"boolean\"\n },\n \"ignoredQueryParameters\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"matchIncomingRequestRoute\": {\n \"type\": \"boolean\"\n },\n \"printOptions\": {\n \"properties\": {\n \"addWhitespace\": {\n \"type\": \"boolean\"\n },\n \"alwaysPrintEnumsAsInts\": {\n \"type\": \"boolean\"\n },\n \"alwaysPrintPrimitiveFields\": {\n \"type\": \"boolean\"\n },\n \"preserveProtoFieldNames\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"protoDescriptor\": {\n \"type\": \"string\"\n },\n \"protoDescriptorBin\": {\n \"format\": \"byte\",\n \"type\": \"string\"\n },\n \"protoDescriptorConfigMap\": {\n \"properties\": {\n \"configMapRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"services\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"rest\": {\n \"properties\": {\n \"swaggerInfo\": {\n \"properties\": {\n \"inline\": {\n \"type\": \"string\"\n },\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"transformations\": {\n \"additionalProperties\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preconnectPolicy\": {\n \"properties\": {\n \"perUpstreamPreconnectRatio\": {\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"predictivePreconnectRatio\": {\n \"nullable\": true,\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"protocolSelection\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"proxyProtocolVersion\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"respectDnsTtl\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"sslConfig\": {\n \"properties\": {\n \"allowRenegotiation\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"alpnProtocols\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"parameters\": {\n \"properties\": {\n \"cipherSuites\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ecdhCurves\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maximumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minimumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"sds\": {\n \"properties\": {\n \"callCredentials\": {\n \"properties\": {\n \"fileCredentialSource\": {\n \"properties\": {\n \"header\": {\n \"type\": \"string\"\n },\n \"tokenFileName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"certificatesSecretName\": {\n \"type\": \"string\"\n },\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"targetUri\": {\n \"type\": \"string\"\n },\n \"validationContextName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sni\": {\n \"type\": \"string\"\n },\n \"sslFiles\": {\n \"properties\": {\n \"ocspStaple\": {\n \"type\": \"string\"\n },\n \"rootCa\": {\n \"type\": \"string\"\n },\n \"tlsCert\": {\n \"type\": \"string\"\n },\n \"tlsKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"verifySubjectAltName\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"static\": {\n \"properties\": {\n \"autoSniRewrite\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"hosts\": {\n \"items\": {\n \"properties\": {\n \"addr\": {\n \"type\": \"string\"\n },\n \"healthCheckConfig\": {\n \"properties\": {\n \"method\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"loadBalancingWeight\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"metadata\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"port\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"sniAddr\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"serviceSpec\": {\n \"properties\": {\n \"graphql\": {\n \"properties\": {\n \"endpoint\": {\n \"properties\": {\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpc\": {\n \"properties\": {\n \"descriptors\": {\n \"format\": \"byte\",\n \"type\": \"string\"\n },\n \"grpcServices\": {\n \"items\": {\n \"properties\": {\n \"functionNames\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"packageName\": {\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcJsonTranscoder\": {\n \"properties\": {\n \"autoMapping\": {\n \"type\": \"boolean\"\n },\n \"convertGrpcStatus\": {\n \"type\": \"boolean\"\n },\n \"ignoreUnknownQueryParameters\": {\n \"type\": \"boolean\"\n },\n \"ignoredQueryParameters\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"matchIncomingRequestRoute\": {\n \"type\": \"boolean\"\n },\n \"printOptions\": {\n \"properties\": {\n \"addWhitespace\": {\n \"type\": \"boolean\"\n },\n \"alwaysPrintEnumsAsInts\": {\n \"type\": \"boolean\"\n },\n \"alwaysPrintPrimitiveFields\": {\n \"type\": \"boolean\"\n },\n \"preserveProtoFieldNames\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"protoDescriptor\": {\n \"type\": \"string\"\n },\n \"protoDescriptorBin\": {\n \"format\": \"byte\",\n \"type\": \"string\"\n },\n \"protoDescriptorConfigMap\": {\n \"properties\": {\n \"configMapRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"services\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"rest\": {\n \"properties\": {\n \"swaggerInfo\": {\n \"properties\": {\n \"inline\": {\n \"type\": \"string\"\n },\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"transformations\": {\n \"additionalProperties\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"useTls\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"useHttp2\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Upstream\",\n \"type\": \"object\"\n}", + "version": "gloo.solo.io/v1" + }, + "configuration": null, + "description": "", + "displayName": "Upstream", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz" + }, + "model": { + "category": { + "name": "Orchestration \u0026 Management" + }, + "displayName": "Gloo", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.18.0-beta18" + }, + "name": "gloo", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "API Gateway", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/UpstreamGroup.json b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/UpstreamGroup.json new file mode 100644 index 00000000000..e1f43b344c6 --- /dev/null +++ b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/UpstreamGroup.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "UpstreamGroup", + "schema": "{\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"destinations\": {\n \"items\": {\n \"properties\": {\n \"destination\": {\n \"properties\": {\n \"consul\": {\n \"properties\": {\n \"dataCenters\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"serviceName\": {\n \"type\": \"string\"\n },\n \"tags\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"destinationSpec\": {\n \"properties\": {\n \"aws\": {\n \"properties\": {\n \"invocationStyle\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"logicalName\": {\n \"type\": \"string\"\n },\n \"requestTransformation\": {\n \"type\": \"boolean\"\n },\n \"responseTransformation\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsAlb\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsApiGateway\": {\n \"type\": \"boolean\"\n },\n \"wrapAsApiGateway\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"azure\": {\n \"properties\": {\n \"functionName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"grpc\": {\n \"properties\": {\n \"function\": {\n \"type\": \"string\"\n },\n \"package\": {\n \"type\": \"string\"\n },\n \"parameters\": {\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"rest\": {\n \"properties\": {\n \"functionName\": {\n \"type\": \"string\"\n },\n \"parameters\": {\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"kube\": {\n \"properties\": {\n \"port\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"ref\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"subset\": {\n \"properties\": {\n \"values\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upstream\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"options\": {\n \"properties\": {\n \"bufferPerRoute\": {\n \"properties\": {\n \"buffer\": {\n \"properties\": {\n \"maxRequestBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"disabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"csrf\": {\n \"properties\": {\n \"additionalOrigins\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filterEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"shadowEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extauth\": {\n \"properties\": {\n \"configRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"customAuth\": {\n \"properties\": {\n \"contextExtensions\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"properties\": {\n \"configs\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"headerManipulation\": {\n \"properties\": {\n \"requestHeadersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requestHeadersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"responseHeadersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseHeadersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"stagedTransformations\": {\n \"properties\": {\n \"early\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"inheritTransformation\": {\n \"type\": \"boolean\"\n },\n \"logRequestResponseInfo\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"postRouting\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"regular\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"transformations\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"weight\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"namespacedStatuses\": {\n \"properties\": {\n \"statuses\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Upstream Group\",\n \"type\": \"object\"\n}", + "version": "gloo.solo.io/v1" + }, + "configuration": null, + "description": "", + "displayName": "Upstream Group", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz" + }, + "model": { + "category": { + "name": "Orchestration \u0026 Management" + }, + "displayName": "Gloo", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.18.0-beta18" + }, + "name": "gloo", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "API Gateway", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/VirtualHostOption.json b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/VirtualHostOption.json new file mode 100644 index 00000000000..81b1c22c653 --- /dev/null +++ b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/VirtualHostOption.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "VirtualHostOption", + "schema": "{\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"namespacedStatuses\": {\n \"properties\": {\n \"statuses\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"options\": {\n \"properties\": {\n \"bufferPerRoute\": {\n \"properties\": {\n \"buffer\": {\n \"properties\": {\n \"maxRequestBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"disabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"cors\": {\n \"properties\": {\n \"allowCredentials\": {\n \"type\": \"boolean\"\n },\n \"allowHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowMethods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowOrigin\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowOriginRegex\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"disableForRoute\": {\n \"type\": \"boolean\"\n },\n \"exposeHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maxAge\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"csrf\": {\n \"properties\": {\n \"additionalOrigins\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filterEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"shadowEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"dlp\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"actionType\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"customAction\": {\n \"properties\": {\n \"maskChar\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"percent\": {\n \"properties\": {\n \"value\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"regexActions\": {\n \"items\": {\n \"properties\": {\n \"regex\": {\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"keyValueAction\": {\n \"properties\": {\n \"keyToMask\": {\n \"type\": \"string\"\n },\n \"maskChar\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"percent\": {\n \"properties\": {\n \"value\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"shadow\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enabledFor\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"extProc\": {\n \"properties\": {\n \"disabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"overrides\": {\n \"properties\": {\n \"asyncMode\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"grpcService\": {\n \"properties\": {\n \"authority\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"extProcServerRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"initialMetadata\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"retryPolicy\": {\n \"properties\": {\n \"numRetries\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"retryBackOff\": {\n \"properties\": {\n \"baseInterval\": {\n \"type\": \"string\"\n },\n \"maxInterval\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"timeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"metadataContextNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"processingMode\": {\n \"properties\": {\n \"requestBodyMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"requestHeaderMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"requestTrailerMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseBodyMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseHeaderMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseTrailerMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"requestAttributes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"responseAttributes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"typedMetadataContextNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extauth\": {\n \"properties\": {\n \"configRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"customAuth\": {\n \"properties\": {\n \"contextExtensions\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"properties\": {\n \"configs\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"headerManipulation\": {\n \"properties\": {\n \"requestHeadersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requestHeadersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"responseHeadersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseHeadersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"includeAttemptCountInResponse\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"includeRequestAttemptCount\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"jwt\": {\n \"properties\": {\n \"allowMissingOrFailedJwt\": {\n \"type\": \"boolean\"\n },\n \"providers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"audiences\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"claimsToHeaders\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"type\": \"boolean\"\n },\n \"claim\": {\n \"type\": \"string\"\n },\n \"header\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"clockSkewSeconds\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"issuer\": {\n \"type\": \"string\"\n },\n \"jwks\": {\n \"properties\": {\n \"local\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"remote\": {\n \"properties\": {\n \"asyncFetch\": {\n \"properties\": {\n \"fastListener\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"cacheDuration\": {\n \"type\": \"string\"\n },\n \"upstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"keepToken\": {\n \"type\": \"boolean\"\n },\n \"tokenSource\": {\n \"properties\": {\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"header\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"queryParams\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"jwtStaged\": {\n \"properties\": {\n \"afterExtAuth\": {\n \"properties\": {\n \"allowMissingOrFailedJwt\": {\n \"type\": \"boolean\"\n },\n \"providers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"audiences\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"claimsToHeaders\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"type\": \"boolean\"\n },\n \"claim\": {\n \"type\": \"string\"\n },\n \"header\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"clockSkewSeconds\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"issuer\": {\n \"type\": \"string\"\n },\n \"jwks\": {\n \"properties\": {\n \"local\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"remote\": {\n \"properties\": {\n \"asyncFetch\": {\n \"properties\": {\n \"fastListener\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"cacheDuration\": {\n \"type\": \"string\"\n },\n \"upstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"keepToken\": {\n \"type\": \"boolean\"\n },\n \"tokenSource\": {\n \"properties\": {\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"header\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"queryParams\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"beforeExtAuth\": {\n \"properties\": {\n \"allowMissingOrFailedJwt\": {\n \"type\": \"boolean\"\n },\n \"providers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"audiences\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"claimsToHeaders\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"type\": \"boolean\"\n },\n \"claim\": {\n \"type\": \"string\"\n },\n \"header\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"clockSkewSeconds\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"issuer\": {\n \"type\": \"string\"\n },\n \"jwks\": {\n \"properties\": {\n \"local\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"remote\": {\n \"properties\": {\n \"asyncFetch\": {\n \"properties\": {\n \"fastListener\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"cacheDuration\": {\n \"type\": \"string\"\n },\n \"upstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"keepToken\": {\n \"type\": \"boolean\"\n },\n \"tokenSource\": {\n \"properties\": {\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"header\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"queryParams\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimitConfigs\": {\n \"properties\": {\n \"refs\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimitEarlyConfigs\": {\n \"properties\": {\n \"refs\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimitRegularConfigs\": {\n \"properties\": {\n \"refs\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"ratelimit\": {\n \"properties\": {\n \"localRatelimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimits\": {\n \"items\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"limit\": {\n \"properties\": {\n \"dynamicMetadata\": {\n \"properties\": {\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"setActions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"ratelimitBasic\": {\n \"properties\": {\n \"anonymousLimits\": {\n \"properties\": {\n \"requestsPerUnit\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"unit\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"authorizedLimits\": {\n \"properties\": {\n \"requestsPerUnit\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"unit\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"ratelimitEarly\": {\n \"properties\": {\n \"localRatelimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimits\": {\n \"items\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"limit\": {\n \"properties\": {\n \"dynamicMetadata\": {\n \"properties\": {\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"setActions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"ratelimitRegular\": {\n \"properties\": {\n \"localRatelimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimits\": {\n \"items\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"limit\": {\n \"properties\": {\n \"dynamicMetadata\": {\n \"properties\": {\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"setActions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"rbac\": {\n \"properties\": {\n \"disable\": {\n \"type\": \"boolean\"\n },\n \"policies\": {\n \"additionalProperties\": {\n \"properties\": {\n \"nestedClaimDelimiter\": {\n \"type\": \"string\"\n },\n \"permissions\": {\n \"properties\": {\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pathPrefix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"principals\": {\n \"items\": {\n \"properties\": {\n \"jwtPrincipal\": {\n \"properties\": {\n \"claims\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"matcher\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"provider\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"retries\": {\n \"properties\": {\n \"numRetries\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"perTryTimeout\": {\n \"type\": \"string\"\n },\n \"previousPriorities\": {\n \"properties\": {\n \"updateFrequency\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"retryBackOff\": {\n \"properties\": {\n \"baseInterval\": {\n \"type\": \"string\"\n },\n \"maxInterval\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"retryOn\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"stagedTransformations\": {\n \"properties\": {\n \"early\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"inheritTransformation\": {\n \"type\": \"boolean\"\n },\n \"logRequestResponseInfo\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"postRouting\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"regular\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"stats\": {\n \"properties\": {\n \"virtualClusters\": {\n \"items\": {\n \"properties\": {\n \"method\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"pattern\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"transformations\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"waf\": {\n \"properties\": {\n \"auditLogging\": {\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"location\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"configMapRuleSets\": {\n \"items\": {\n \"properties\": {\n \"configMapRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dataMapKeys\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"coreRuleSet\": {\n \"properties\": {\n \"customSettingsFile\": {\n \"type\": \"string\"\n },\n \"customSettingsString\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"customInterventionMessage\": {\n \"type\": \"string\"\n },\n \"disabled\": {\n \"type\": \"boolean\"\n },\n \"requestHeadersOnly\": {\n \"type\": \"boolean\"\n },\n \"responseHeadersOnly\": {\n \"type\": \"boolean\"\n },\n \"ruleSets\": {\n \"items\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n },\n \"files\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ruleStr\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"targetRefs\": {\n \"items\": {\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"sectionName\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Virtual Host Option\",\n \"type\": \"object\"\n}", + "version": "gateway.solo.io/v1" + }, + "configuration": null, + "description": "", + "displayName": "Virtual Host Option", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz" + }, + "model": { + "category": { + "name": "Orchestration \u0026 Management" + }, + "displayName": "Gloo", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.18.0-beta18" + }, + "name": "gloo", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "API Gateway", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/VirtualService.json b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/VirtualService.json new file mode 100644 index 00000000000..0c75d8fec2c --- /dev/null +++ b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/components/VirtualService.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "VirtualService", + "schema": "{\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"displayName\": {\n \"type\": \"string\"\n },\n \"namespacedStatuses\": {\n \"properties\": {\n \"statuses\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"sslConfig\": {\n \"properties\": {\n \"alpnProtocols\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"disableTlsSessionResumption\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"ocspStaplePolicy\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"oneWayTls\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"parameters\": {\n \"properties\": {\n \"cipherSuites\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ecdhCurves\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maximumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minimumProtocolVersion\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"sds\": {\n \"properties\": {\n \"callCredentials\": {\n \"properties\": {\n \"fileCredentialSource\": {\n \"properties\": {\n \"header\": {\n \"type\": \"string\"\n },\n \"tokenFileName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"certificatesSecretName\": {\n \"type\": \"string\"\n },\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"targetUri\": {\n \"type\": \"string\"\n },\n \"validationContextName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sniDomains\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"sslFiles\": {\n \"properties\": {\n \"ocspStaple\": {\n \"type\": \"string\"\n },\n \"rootCa\": {\n \"type\": \"string\"\n },\n \"tlsCert\": {\n \"type\": \"string\"\n },\n \"tlsKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"transportSocketConnectTimeout\": {\n \"type\": \"string\"\n },\n \"verifySubjectAltName\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"virtualHost\": {\n \"properties\": {\n \"domains\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"options\": {\n \"properties\": {\n \"bufferPerRoute\": {\n \"properties\": {\n \"buffer\": {\n \"properties\": {\n \"maxRequestBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"disabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"cors\": {\n \"properties\": {\n \"allowCredentials\": {\n \"type\": \"boolean\"\n },\n \"allowHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowMethods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowOrigin\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowOriginRegex\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"disableForRoute\": {\n \"type\": \"boolean\"\n },\n \"exposeHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maxAge\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"csrf\": {\n \"properties\": {\n \"additionalOrigins\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filterEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"shadowEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"dlp\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"actionType\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"customAction\": {\n \"properties\": {\n \"maskChar\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"percent\": {\n \"properties\": {\n \"value\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"regexActions\": {\n \"items\": {\n \"properties\": {\n \"regex\": {\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"keyValueAction\": {\n \"properties\": {\n \"keyToMask\": {\n \"type\": \"string\"\n },\n \"maskChar\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"percent\": {\n \"properties\": {\n \"value\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"shadow\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enabledFor\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"extProc\": {\n \"properties\": {\n \"disabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"overrides\": {\n \"properties\": {\n \"asyncMode\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"grpcService\": {\n \"properties\": {\n \"authority\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"extProcServerRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"initialMetadata\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"retryPolicy\": {\n \"properties\": {\n \"numRetries\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"retryBackOff\": {\n \"properties\": {\n \"baseInterval\": {\n \"type\": \"string\"\n },\n \"maxInterval\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"timeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"metadataContextNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"processingMode\": {\n \"properties\": {\n \"requestBodyMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"requestHeaderMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"requestTrailerMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseBodyMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseHeaderMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseTrailerMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"requestAttributes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"responseAttributes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"typedMetadataContextNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extauth\": {\n \"properties\": {\n \"configRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"customAuth\": {\n \"properties\": {\n \"contextExtensions\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"properties\": {\n \"configs\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"headerManipulation\": {\n \"properties\": {\n \"requestHeadersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requestHeadersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"responseHeadersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseHeadersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"includeAttemptCountInResponse\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"includeRequestAttemptCount\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"jwt\": {\n \"properties\": {\n \"allowMissingOrFailedJwt\": {\n \"type\": \"boolean\"\n },\n \"providers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"audiences\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"claimsToHeaders\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"type\": \"boolean\"\n },\n \"claim\": {\n \"type\": \"string\"\n },\n \"header\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"clockSkewSeconds\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"issuer\": {\n \"type\": \"string\"\n },\n \"jwks\": {\n \"properties\": {\n \"local\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"remote\": {\n \"properties\": {\n \"asyncFetch\": {\n \"properties\": {\n \"fastListener\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"cacheDuration\": {\n \"type\": \"string\"\n },\n \"upstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"keepToken\": {\n \"type\": \"boolean\"\n },\n \"tokenSource\": {\n \"properties\": {\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"header\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"queryParams\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"jwtStaged\": {\n \"properties\": {\n \"afterExtAuth\": {\n \"properties\": {\n \"allowMissingOrFailedJwt\": {\n \"type\": \"boolean\"\n },\n \"providers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"audiences\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"claimsToHeaders\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"type\": \"boolean\"\n },\n \"claim\": {\n \"type\": \"string\"\n },\n \"header\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"clockSkewSeconds\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"issuer\": {\n \"type\": \"string\"\n },\n \"jwks\": {\n \"properties\": {\n \"local\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"remote\": {\n \"properties\": {\n \"asyncFetch\": {\n \"properties\": {\n \"fastListener\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"cacheDuration\": {\n \"type\": \"string\"\n },\n \"upstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"keepToken\": {\n \"type\": \"boolean\"\n },\n \"tokenSource\": {\n \"properties\": {\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"header\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"queryParams\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"beforeExtAuth\": {\n \"properties\": {\n \"allowMissingOrFailedJwt\": {\n \"type\": \"boolean\"\n },\n \"providers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"audiences\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"claimsToHeaders\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"type\": \"boolean\"\n },\n \"claim\": {\n \"type\": \"string\"\n },\n \"header\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"clockSkewSeconds\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"issuer\": {\n \"type\": \"string\"\n },\n \"jwks\": {\n \"properties\": {\n \"local\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"remote\": {\n \"properties\": {\n \"asyncFetch\": {\n \"properties\": {\n \"fastListener\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"cacheDuration\": {\n \"type\": \"string\"\n },\n \"upstreamRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"keepToken\": {\n \"type\": \"boolean\"\n },\n \"tokenSource\": {\n \"properties\": {\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"header\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"queryParams\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimitConfigs\": {\n \"properties\": {\n \"refs\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimitEarlyConfigs\": {\n \"properties\": {\n \"refs\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimitRegularConfigs\": {\n \"properties\": {\n \"refs\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"ratelimit\": {\n \"properties\": {\n \"localRatelimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimits\": {\n \"items\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"limit\": {\n \"properties\": {\n \"dynamicMetadata\": {\n \"properties\": {\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"setActions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"ratelimitBasic\": {\n \"properties\": {\n \"anonymousLimits\": {\n \"properties\": {\n \"requestsPerUnit\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"unit\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"authorizedLimits\": {\n \"properties\": {\n \"requestsPerUnit\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"unit\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"ratelimitEarly\": {\n \"properties\": {\n \"localRatelimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimits\": {\n \"items\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"limit\": {\n \"properties\": {\n \"dynamicMetadata\": {\n \"properties\": {\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"setActions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"ratelimitRegular\": {\n \"properties\": {\n \"localRatelimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimits\": {\n \"items\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"limit\": {\n \"properties\": {\n \"dynamicMetadata\": {\n \"properties\": {\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"setActions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"rbac\": {\n \"properties\": {\n \"disable\": {\n \"type\": \"boolean\"\n },\n \"policies\": {\n \"additionalProperties\": {\n \"properties\": {\n \"nestedClaimDelimiter\": {\n \"type\": \"string\"\n },\n \"permissions\": {\n \"properties\": {\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pathPrefix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"principals\": {\n \"items\": {\n \"properties\": {\n \"jwtPrincipal\": {\n \"properties\": {\n \"claims\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"matcher\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"provider\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"retries\": {\n \"properties\": {\n \"numRetries\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"perTryTimeout\": {\n \"type\": \"string\"\n },\n \"previousPriorities\": {\n \"properties\": {\n \"updateFrequency\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"retryBackOff\": {\n \"properties\": {\n \"baseInterval\": {\n \"type\": \"string\"\n },\n \"maxInterval\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"retryOn\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"stagedTransformations\": {\n \"properties\": {\n \"early\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"inheritTransformation\": {\n \"type\": \"boolean\"\n },\n \"logRequestResponseInfo\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"postRouting\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"regular\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"stats\": {\n \"properties\": {\n \"virtualClusters\": {\n \"items\": {\n \"properties\": {\n \"method\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"pattern\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"transformations\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"waf\": {\n \"properties\": {\n \"auditLogging\": {\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"location\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"configMapRuleSets\": {\n \"items\": {\n \"properties\": {\n \"configMapRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dataMapKeys\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"coreRuleSet\": {\n \"properties\": {\n \"customSettingsFile\": {\n \"type\": \"string\"\n },\n \"customSettingsString\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"customInterventionMessage\": {\n \"type\": \"string\"\n },\n \"disabled\": {\n \"type\": \"boolean\"\n },\n \"requestHeadersOnly\": {\n \"type\": \"boolean\"\n },\n \"responseHeadersOnly\": {\n \"type\": \"boolean\"\n },\n \"ruleSets\": {\n \"items\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n },\n \"files\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ruleStr\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"optionsConfigRefs\": {\n \"properties\": {\n \"delegateOptions\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"routes\": {\n \"items\": {\n \"properties\": {\n \"delegateAction\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n },\n \"ref\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"properties\": {\n \"expressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"directResponseAction\": {\n \"properties\": {\n \"body\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"graphqlApiRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"inheritableMatchers\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"inheritablePathMatchers\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"options\": {\n \"properties\": {\n \"ai\": {\n \"properties\": {\n \"backupModels\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"defaults\": {\n \"items\": {\n \"properties\": {\n \"field\": {\n \"type\": \"string\"\n },\n \"override\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"promptEnrichment\": {\n \"properties\": {\n \"append\": {\n \"items\": {\n \"properties\": {\n \"content\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"prepend\": {\n \"items\": {\n \"properties\": {\n \"content\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"promptGuard\": {\n \"properties\": {\n \"request\": {\n \"properties\": {\n \"customResponseMessage\": {\n \"type\": \"string\"\n },\n \"matches\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"response\": {\n \"properties\": {\n \"builtins\": {\n \"items\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"array\"\n },\n \"matches\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"rag\": {\n \"properties\": {\n \"datastore\": {\n \"properties\": {\n \"postgres\": {\n \"properties\": {\n \"collectionName\": {\n \"type\": \"string\"\n },\n \"connectionString\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"embedding\": {\n \"properties\": {\n \"openai\": {\n \"properties\": {\n \"authToken\": {\n \"properties\": {\n \"inline\": {\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"promptTemplate\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"semanticCache\": {\n \"properties\": {\n \"datastore\": {\n \"properties\": {\n \"redis\": {\n \"properties\": {\n \"connectionString\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"embedding\": {\n \"properties\": {\n \"openai\": {\n \"properties\": {\n \"authToken\": {\n \"properties\": {\n \"inline\": {\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"ttl\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"appendXForwardedHost\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"autoHostRewrite\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"bufferPerRoute\": {\n \"properties\": {\n \"buffer\": {\n \"properties\": {\n \"maxRequestBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"disabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"cors\": {\n \"properties\": {\n \"allowCredentials\": {\n \"type\": \"boolean\"\n },\n \"allowHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowMethods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowOrigin\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowOriginRegex\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"disableForRoute\": {\n \"type\": \"boolean\"\n },\n \"exposeHeaders\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maxAge\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"csrf\": {\n \"properties\": {\n \"additionalOrigins\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filterEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"shadowEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"dlp\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"actionType\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"customAction\": {\n \"properties\": {\n \"maskChar\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"percent\": {\n \"properties\": {\n \"value\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"regexActions\": {\n \"items\": {\n \"properties\": {\n \"regex\": {\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"keyValueAction\": {\n \"properties\": {\n \"keyToMask\": {\n \"type\": \"string\"\n },\n \"maskChar\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"percent\": {\n \"properties\": {\n \"value\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"shadow\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enabledFor\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"envoyMetadata\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"extProc\": {\n \"properties\": {\n \"disabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"overrides\": {\n \"properties\": {\n \"asyncMode\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"grpcService\": {\n \"properties\": {\n \"authority\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"extProcServerRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"initialMetadata\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"retryPolicy\": {\n \"properties\": {\n \"numRetries\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"retryBackOff\": {\n \"properties\": {\n \"baseInterval\": {\n \"type\": \"string\"\n },\n \"maxInterval\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"timeout\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"metadataContextNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"processingMode\": {\n \"properties\": {\n \"requestBodyMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"requestHeaderMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"requestTrailerMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseBodyMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseHeaderMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"responseTrailerMode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"requestAttributes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"responseAttributes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"typedMetadataContextNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extauth\": {\n \"properties\": {\n \"configRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"customAuth\": {\n \"properties\": {\n \"contextExtensions\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"properties\": {\n \"configs\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"faults\": {\n \"properties\": {\n \"abort\": {\n \"properties\": {\n \"httpStatus\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"percentage\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"delay\": {\n \"properties\": {\n \"fixedDelay\": {\n \"type\": \"string\"\n },\n \"percentage\": {\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"headerManipulation\": {\n \"properties\": {\n \"requestHeadersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requestHeadersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"responseHeadersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseHeadersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"hostRewrite\": {\n \"type\": \"string\"\n },\n \"hostRewriteHeader\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"hostRewritePathRegex\": {\n \"properties\": {\n \"pattern\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"substitution\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"idleTimeout\": {\n \"type\": \"string\"\n },\n \"jwt\": {\n \"properties\": {\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"jwtStaged\": {\n \"properties\": {\n \"afterExtAuth\": {\n \"properties\": {\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"beforeExtAuth\": {\n \"properties\": {\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"lbHash\": {\n \"properties\": {\n \"hashPolicies\": {\n \"items\": {\n \"properties\": {\n \"cookie\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"ttl\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"sourceIp\": {\n \"type\": \"boolean\"\n },\n \"terminal\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"maxStreamDuration\": {\n \"properties\": {\n \"grpcTimeoutHeaderMax\": {\n \"type\": \"string\"\n },\n \"grpcTimeoutHeaderOffset\": {\n \"type\": \"string\"\n },\n \"maxStreamDuration\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"prefixRewrite\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"rateLimitConfigs\": {\n \"properties\": {\n \"refs\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimitEarlyConfigs\": {\n \"properties\": {\n \"refs\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimitRegularConfigs\": {\n \"properties\": {\n \"refs\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"ratelimit\": {\n \"properties\": {\n \"includeVhRateLimits\": {\n \"type\": \"boolean\"\n },\n \"localRatelimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimits\": {\n \"items\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"limit\": {\n \"properties\": {\n \"dynamicMetadata\": {\n \"properties\": {\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"setActions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"ratelimitBasic\": {\n \"properties\": {\n \"anonymousLimits\": {\n \"properties\": {\n \"requestsPerUnit\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"unit\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"authorizedLimits\": {\n \"properties\": {\n \"requestsPerUnit\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"unit\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"ratelimitEarly\": {\n \"properties\": {\n \"includeVhRateLimits\": {\n \"type\": \"boolean\"\n },\n \"localRatelimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimits\": {\n \"items\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"limit\": {\n \"properties\": {\n \"dynamicMetadata\": {\n \"properties\": {\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"setActions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"ratelimitRegular\": {\n \"properties\": {\n \"includeVhRateLimits\": {\n \"type\": \"boolean\"\n },\n \"localRatelimit\": {\n \"properties\": {\n \"fillInterval\": {\n \"type\": \"string\"\n },\n \"maxTokens\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tokensPerFill\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"rateLimits\": {\n \"items\": {\n \"properties\": {\n \"actions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"limit\": {\n \"properties\": {\n \"dynamicMetadata\": {\n \"properties\": {\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"setActions\": {\n \"items\": {\n \"properties\": {\n \"destinationCluster\": {\n \"type\": \"object\"\n },\n \"genericKey\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerValueMatch\": {\n \"properties\": {\n \"descriptorValue\": {\n \"type\": \"string\"\n },\n \"expectMatch\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"exactMatch\": {\n \"type\": \"string\"\n },\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefixMatch\": {\n \"type\": \"string\"\n },\n \"presentMatch\": {\n \"type\": \"boolean\"\n },\n \"rangeMatch\": {\n \"properties\": {\n \"end\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n },\n \"start\": {\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"regexMatch\": {\n \"type\": \"string\"\n },\n \"suffixMatch\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"defaultValue\": {\n \"type\": \"string\"\n },\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"metadataKey\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"source\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"remoteAddress\": {\n \"type\": \"object\"\n },\n \"requestHeaders\": {\n \"properties\": {\n \"descriptorKey\": {\n \"type\": \"string\"\n },\n \"headerName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceCluster\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"rbac\": {\n \"properties\": {\n \"disable\": {\n \"type\": \"boolean\"\n },\n \"policies\": {\n \"additionalProperties\": {\n \"properties\": {\n \"nestedClaimDelimiter\": {\n \"type\": \"string\"\n },\n \"permissions\": {\n \"properties\": {\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pathPrefix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"principals\": {\n \"items\": {\n \"properties\": {\n \"jwtPrincipal\": {\n \"properties\": {\n \"claims\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"matcher\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"provider\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"regexRewrite\": {\n \"properties\": {\n \"pattern\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"substitution\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"retries\": {\n \"properties\": {\n \"numRetries\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"perTryTimeout\": {\n \"type\": \"string\"\n },\n \"previousPriorities\": {\n \"properties\": {\n \"updateFrequency\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"retryBackOff\": {\n \"properties\": {\n \"baseInterval\": {\n \"type\": \"string\"\n },\n \"maxInterval\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"retryOn\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"shadowing\": {\n \"properties\": {\n \"percentage\": {\n \"type\": \"number\"\n },\n \"upstream\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"stagedTransformations\": {\n \"properties\": {\n \"early\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"inheritTransformation\": {\n \"type\": \"boolean\"\n },\n \"logRequestResponseInfo\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"postRouting\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"regular\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"timeout\": {\n \"type\": \"string\"\n },\n \"tracing\": {\n \"properties\": {\n \"propagate\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"routeDescriptor\": {\n \"type\": \"string\"\n },\n \"tracePercentages\": {\n \"properties\": {\n \"clientSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"overallSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"randomSamplePercentage\": {\n \"nullable\": true,\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"transformations\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upgrades\": {\n \"items\": {\n \"properties\": {\n \"connect\": {\n \"properties\": {\n \"enabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"websocket\": {\n \"properties\": {\n \"enabled\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"waf\": {\n \"properties\": {\n \"auditLogging\": {\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"location\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"configMapRuleSets\": {\n \"items\": {\n \"properties\": {\n \"configMapRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dataMapKeys\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"coreRuleSet\": {\n \"properties\": {\n \"customSettingsFile\": {\n \"type\": \"string\"\n },\n \"customSettingsString\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"customInterventionMessage\": {\n \"type\": \"string\"\n },\n \"disabled\": {\n \"type\": \"boolean\"\n },\n \"requestHeadersOnly\": {\n \"type\": \"boolean\"\n },\n \"responseHeadersOnly\": {\n \"type\": \"boolean\"\n },\n \"ruleSets\": {\n \"items\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n },\n \"files\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ruleStr\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"optionsConfigRefs\": {\n \"properties\": {\n \"delegateOptions\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"redirectAction\": {\n \"properties\": {\n \"hostRedirect\": {\n \"type\": \"string\"\n },\n \"httpsRedirect\": {\n \"type\": \"boolean\"\n },\n \"pathRedirect\": {\n \"type\": \"string\"\n },\n \"portRedirect\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"prefixRewrite\": {\n \"type\": \"string\"\n },\n \"regexRewrite\": {\n \"properties\": {\n \"pattern\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"substitution\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"responseCode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"stripQuery\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"routeAction\": {\n \"properties\": {\n \"clusterHeader\": {\n \"type\": \"string\"\n },\n \"dynamicForwardProxy\": {\n \"properties\": {\n \"autoHostRewriteHeader\": {\n \"type\": \"string\"\n },\n \"hostRewrite\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"multi\": {\n \"properties\": {\n \"destinations\": {\n \"items\": {\n \"properties\": {\n \"destination\": {\n \"properties\": {\n \"consul\": {\n \"properties\": {\n \"dataCenters\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"serviceName\": {\n \"type\": \"string\"\n },\n \"tags\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"destinationSpec\": {\n \"properties\": {\n \"aws\": {\n \"properties\": {\n \"invocationStyle\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"logicalName\": {\n \"type\": \"string\"\n },\n \"requestTransformation\": {\n \"type\": \"boolean\"\n },\n \"responseTransformation\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsAlb\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsApiGateway\": {\n \"type\": \"boolean\"\n },\n \"wrapAsApiGateway\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"azure\": {\n \"properties\": {\n \"functionName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"grpc\": {\n \"properties\": {\n \"function\": {\n \"type\": \"string\"\n },\n \"package\": {\n \"type\": \"string\"\n },\n \"parameters\": {\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"rest\": {\n \"properties\": {\n \"functionName\": {\n \"type\": \"string\"\n },\n \"parameters\": {\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"kube\": {\n \"properties\": {\n \"port\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"ref\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"subset\": {\n \"properties\": {\n \"values\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upstream\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"options\": {\n \"properties\": {\n \"bufferPerRoute\": {\n \"properties\": {\n \"buffer\": {\n \"properties\": {\n \"maxRequestBytes\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"disabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"csrf\": {\n \"properties\": {\n \"additionalOrigins\": {\n \"items\": {\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"ignoreCase\": {\n \"type\": \"boolean\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"safeRegex\": {\n \"properties\": {\n \"googleRe2\": {\n \"properties\": {\n \"maxProgramSize\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"suffix\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filterEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"shadowEnabled\": {\n \"properties\": {\n \"defaultValue\": {\n \"properties\": {\n \"denominator\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"numerator\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeKey\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extauth\": {\n \"properties\": {\n \"configRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"customAuth\": {\n \"properties\": {\n \"contextExtensions\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"disable\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"properties\": {\n \"configs\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"headerManipulation\": {\n \"properties\": {\n \"requestHeadersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headerSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requestHeadersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"responseHeadersToAdd\": {\n \"items\": {\n \"properties\": {\n \"append\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"header\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseHeadersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"stagedTransformations\": {\n \"properties\": {\n \"early\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"inheritTransformation\": {\n \"type\": \"boolean\"\n },\n \"logRequestResponseInfo\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"postRouting\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"regular\": {\n \"properties\": {\n \"requestTransforms\": {\n \"items\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"matcher\": {\n \"properties\": {\n \"caseSensitive\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"connectMatcher\": {\n \"type\": \"object\"\n },\n \"exact\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"queryParameters\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"regex\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseTransforms\": {\n \"items\": {\n \"properties\": {\n \"matchers\": {\n \"items\": {\n \"properties\": {\n \"invertMatch\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"type\": \"boolean\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"responseCodeDetails\": {\n \"type\": \"string\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"transformations\": {\n \"properties\": {\n \"clearRouteCache\": {\n \"type\": \"boolean\"\n },\n \"requestTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"headerBodyTransform\": {\n \"properties\": {\n \"addRequestMetadata\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logRequestResponseInfo\": {\n \"type\": \"boolean\"\n },\n \"transformationTemplate\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"xsltTransformation\": {\n \"properties\": {\n \"nonXmlTransform\": {\n \"type\": \"boolean\"\n },\n \"setContentType\": {\n \"type\": \"string\"\n },\n \"xslt\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"weight\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"single\": {\n \"properties\": {\n \"consul\": {\n \"properties\": {\n \"dataCenters\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"serviceName\": {\n \"type\": \"string\"\n },\n \"tags\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"destinationSpec\": {\n \"properties\": {\n \"aws\": {\n \"properties\": {\n \"invocationStyle\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"logicalName\": {\n \"type\": \"string\"\n },\n \"requestTransformation\": {\n \"type\": \"boolean\"\n },\n \"responseTransformation\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsAlb\": {\n \"type\": \"boolean\"\n },\n \"unwrapAsApiGateway\": {\n \"type\": \"boolean\"\n },\n \"wrapAsApiGateway\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"azure\": {\n \"properties\": {\n \"functionName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"grpc\": {\n \"properties\": {\n \"function\": {\n \"type\": \"string\"\n },\n \"package\": {\n \"type\": \"string\"\n },\n \"parameters\": {\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"rest\": {\n \"properties\": {\n \"functionName\": {\n \"type\": \"string\"\n },\n \"parameters\": {\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"responseTransformation\": {\n \"properties\": {\n \"advancedTemplates\": {\n \"type\": \"boolean\"\n },\n \"body\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dynamicMetadataValues\": {\n \"items\": {\n \"properties\": {\n \"jsonToProto\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"metadataNamespace\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"escapeCharacters\": {\n \"type\": \"boolean\"\n },\n \"extractors\": {\n \"additionalProperties\": {\n \"properties\": {\n \"body\": {\n \"maxProperties\": 0,\n \"type\": \"object\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"regex\": {\n \"type\": \"string\"\n },\n \"replacementText\": {\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"subgroup\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"headersToAppend\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"headersToRemove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreErrorOnParse\": {\n \"type\": \"boolean\"\n },\n \"mergeExtractorsToBody\": {\n \"type\": \"object\"\n },\n \"parseBodyBehavior\": {\n \"type\": \"string\",\n \"x-kubernetes-int-or-string\": true\n },\n \"passthrough\": {\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"kube\": {\n \"properties\": {\n \"port\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"ref\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"subset\": {\n \"properties\": {\n \"values\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upstream\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"upstreamGroup\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Virtual Service\",\n \"type\": \"object\"\n}", + "version": "gateway.solo.io/v1" + }, + "configuration": null, + "description": "", + "displayName": "Virtual Service", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz" + }, + "model": { + "category": { + "name": "Orchestration \u0026 Management" + }, + "displayName": "Gloo", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://storage.googleapis.com/solo-public-helm/charts/gloo-1.18.0-beta9.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.18.0-beta18" + }, + "name": "gloo", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "API Gateway", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/model.json b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/model.json new file mode 100644 index 00000000000..2b5fee68c2b --- /dev/null +++ b/server/meshmodel/gloo/1.18.0-beta18/v1.0.0/model.json @@ -0,0 +1,42 @@ +{ + "category": { + "name": "Orchestration \u0026 Management" + }, + "displayName": "Gloo", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "capabilities": null, + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.18.0-beta18" + }, + "name": "gloo", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "API Gateway", + "version": "v1.0.0", + "components": null, + "relationships": null + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/CassandraDatacenter.json b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/CassandraDatacenter.json new file mode 100644 index 00000000000..77d114be6ea --- /dev/null +++ b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/CassandraDatacenter.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "CassandraDatacenter", + "schema": "{\n \"description\": \"CassandraDatacenter is the Schema for the cassandradatacenters API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"CassandraDatacenterSpec defines the desired state of a CassandraDatacenter\",\n \"format\": \"textarea\",\n \"properties\": {\n \"additionalAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Additional Annotations allows to define additional labels that will be included in all objects created by the operator. Note, user can override values set by default from the cass-operator and doing so could break cass-operator functionality.\",\n \"type\": \"object\"\n },\n \"additionalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Additional Labels allows to define additional labels that will be included in all objects created by the operator. Note, user can override values set by default from the cass-operator and doing so could break cass-operator functionality.\",\n \"type\": \"object\"\n },\n \"additionalSeeds\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalServiceConfig\": {\n \"description\": \"AdditionalServiceConfig allows to define additional parameters that are included in the created Services. Note, user can override values set by cass-operator and doing so could break cass-operator functionality.\\nAvoid label \\\"cass-operator\\\" and anything that starts with \\\"cassandra.datastax.com/\\\"\",\n \"properties\": {\n \"additionalSeedService\": {\n \"description\": \"ServiceConfigAdditions exposes additional options for each service\",\n \"properties\": {\n \"additionalAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"additionalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"allpodsService\": {\n \"description\": \"ServiceConfigAdditions exposes additional options for each service\",\n \"properties\": {\n \"additionalAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"additionalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"dcService\": {\n \"description\": \"ServiceConfigAdditions exposes additional options for each service\",\n \"properties\": {\n \"additionalAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"additionalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nodePortService\": {\n \"description\": \"ServiceConfigAdditions exposes additional options for each service\",\n \"properties\": {\n \"additionalAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"additionalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"seedService\": {\n \"description\": \"ServiceConfigAdditions exposes additional options for each service\",\n \"properties\": {\n \"additionalAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"additionalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"allowMultipleNodesPerWorker\": {\n \"description\": \"Turning this option on allows multiple server pods to be created on a k8s worker node, by removing the default pod anti affinity rules.\\nBy default the operator creates just one server pod per k8s worker node. Using custom affinity rules might require turning this\\noption on in which case the defaults are not set.\",\n \"type\": \"boolean\"\n },\n \"canaryUpgrade\": {\n \"description\": \"Indicates that configuration and container image changes should only be pushed to\\nthe first rack of the datacenter\",\n \"type\": \"boolean\"\n },\n \"canaryUpgradeCount\": {\n \"description\": \"The number of nodes that will be updated when CanaryUpgrade is true. Note that the value is\\neither 0 or greater than the rack size, then all nodes in the rack will get updated.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"cdc\": {\n \"description\": \"CDC allows configuration of the change data capture agent which can run within the Management API container. Use it to send data to Pulsar.\",\n \"properties\": {\n \"cdcConcurrentProcessors\": {\n \"type\": \"integer\"\n },\n \"cdcPollIntervalM\": {\n \"type\": \"integer\"\n },\n \"cdcWorkingDir\": {\n \"type\": \"string\"\n },\n \"errorCommitLogReprocessEnabled\": {\n \"type\": \"boolean\"\n },\n \"pulsarAuthParams\": {\n \"type\": \"string\"\n },\n \"pulsarAuthPluginClassName\": {\n \"type\": \"string\"\n },\n \"pulsarBatchDelayInMs\": {\n \"type\": \"integer\"\n },\n \"pulsarKeyBasedBatcher\": {\n \"type\": \"boolean\"\n },\n \"pulsarMaxPendingMessages\": {\n \"type\": \"integer\"\n },\n \"pulsarMaxPendingMessagesAcrossPartitions\": {\n \"type\": \"integer\"\n },\n \"pulsarServiceUrl\": {\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"sslAllowInsecureConnection\": {\n \"type\": \"string\"\n },\n \"sslCipherSuites\": {\n \"type\": \"string\"\n },\n \"sslEnabledProtocols\": {\n \"type\": \"string\"\n },\n \"sslHostnameVerificationEnable\": {\n \"type\": \"string\"\n },\n \"sslKeystorePassword\": {\n \"type\": \"string\"\n },\n \"sslKeystorePath\": {\n \"type\": \"string\"\n },\n \"sslProvider\": {\n \"type\": \"string\"\n },\n \"sslTruststorePassword\": {\n \"type\": \"string\"\n },\n \"sslTruststorePath\": {\n \"type\": \"string\"\n },\n \"sslTruststoreType\": {\n \"type\": \"string\"\n },\n \"topicPrefix\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pulsarServiceUrl\"\n ],\n \"type\": \"object\"\n },\n \"clusterName\": {\n \"description\": \"The name by which CQL clients and instances will know the cluster. If the same\\ncluster name is shared by multiple Datacenters in the same Kubernetes namespace,\\nthey will join together in a multi-datacenter cluster.\",\n \"minLength\": 2,\n \"type\": \"string\"\n },\n \"configBuilderImage\": {\n \"description\": \"Container image for the config builder init container. Overrides value from ImageConfig ConfigBuilderImage\",\n \"type\": \"string\"\n },\n \"configBuilderResources\": {\n \"description\": \"Kubernetes resource requests and limits per server config initialization container.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"configSecret\": {\n \"description\": \"ConfigSecret is the name of a secret that contains configuration for Cassandra. The\\nsecret is expected to have a property named config whose value should be a JSON\\nformatted string that should look like this:\\n\\n\\n config: |-\\n {\\n \\\"cassandra-yaml\\\": {\\n \\\"read_request_timeout_in_ms\\\": 10000\\n },\\n \\\"jmv-options\\\": {\\n \\\"max_heap_size\\\": 1024M\\n }\\n }\\n\\n\\nConfigSecret is mutually exclusive with Config. ConfigSecret takes precedence and\\nwill be used exclusively if both properties are set. The operator sets a watch such\\nthat an update to the secret will trigger an update of the StatefulSets.\",\n \"type\": \"string\"\n },\n \"datacenterName\": {\n \"description\": \"DatacenterName allows to override the name of the Cassandra datacenter. Kubernetes objects will be named after a sanitized version of it if set, and if not metadata.name. In Cassandra the DC name will be overridden by this value.\\nIt may generate some confusion as objects created for the DC will have a different name than the CasandraDatacenter object itself.\\nThis setting can create conflicts if multiple DCs coexist in the same namespace if metadata.name for a DC with no override is set to the same value as the override name of another DC.\\nUse cautiously.\",\n \"type\": \"string\"\n },\n \"disableSystemLoggerSidecar\": {\n \"description\": \"Configuration for disabling the simple log tailing sidecar container. Our default is to have it enabled.\",\n \"type\": \"boolean\"\n },\n \"dockerImageRunsAsCassandra\": {\n \"description\": \"DEPRECATED This setting does nothing and defaults to true. Use SecurityContext instead.\",\n \"type\": \"boolean\"\n },\n \"dseWorkloads\": {\n \"properties\": {\n \"analyticsEnabled\": {\n \"type\": \"boolean\"\n },\n \"graphEnabled\": {\n \"type\": \"boolean\"\n },\n \"searchEnabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"forceUpgradeRacks\": {\n \"description\": \"Rack names in this list are set to the latest StatefulSet configuration\\neven if Cassandra nodes are down. Use this to recover from an upgrade that couldn't\\nroll out.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"managementApiAuth\": {\n \"description\": \"Config for the Management API certificates\",\n \"properties\": {\n \"insecure\": {\n \"type\": \"object\"\n },\n \"manual\": {\n \"properties\": {\n \"clientSecretName\": {\n \"type\": \"string\"\n },\n \"serverSecretName\": {\n \"type\": \"string\"\n },\n \"skipSecretValidation\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"clientSecretName\",\n \"serverSecretName\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"minReadySeconds\": {\n \"description\": \"MinReadySeconds sets the minimum number of seconds for which a newly created pod should be ready without any of its containers crashing, for it to be considered available. Defaults to 5 seconds and is set in the StatefulSet spec.\\nSetting to 0 might cause multiple Cassandra pods to restart at the same time despite PodDisruptionBudget settings.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"networking\": {\n \"properties\": {\n \"hostNetwork\": {\n \"type\": \"boolean\"\n },\n \"nodePort\": {\n \"properties\": {\n \"internode\": {\n \"type\": \"integer\"\n },\n \"internodeSSL\": {\n \"type\": \"integer\"\n },\n \"native\": {\n \"type\": \"integer\"\n },\n \"nativeSSL\": {\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nodeAffinityLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeAffinityLabels to pin the Datacenter, using node affinity\",\n \"type\": \"object\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"A map of label keys and values to restrict Cassandra node scheduling to k8s workers\\nwith matchiing labels.\\nMore info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector\",\n \"type\": \"object\"\n },\n \"podTemplateSpec\": {\n \"description\": \"PodTemplate provides customisation options (labels, annotations, affinity rules, resource requests, and so on) for the cassandra pods\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"Standard object's metadata.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Specification of the desired behavior of the pod.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\",\n \"properties\": {\n \"activeDeadlineSeconds\": {\n \"description\": \"Optional duration in seconds the pod may be active on the node relative to\\nStartTime before the system will actively try to mark it failed and kill associated containers.\\nValue must be a positive integer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"affinity\": {\n \"description\": \"If specified, the pod's scheduling constraints\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"automountServiceAccountToken\": {\n \"description\": \"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.\",\n \"type\": \"boolean\"\n },\n \"containers\": {\n \"description\": \"List of containers belonging to the pod.\\nContainers cannot currently be added or removed.\\nThere must be at least one container in a Pod.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"Set DNS policy for the pod.\\nDefaults to \\\"ClusterFirst\\\".\\nValid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.\\nDNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.\\nTo have DNS options set along with hostNetwork, you have to specify DNS policy\\nexplicitly to 'ClusterFirstWithHostNet'.\",\n \"type\": \"string\"\n },\n \"enableServiceLinks\": {\n \"description\": \"EnableServiceLinks indicates whether information about services should be injected into pod's\\nenvironment variables, matching the syntax of Docker links.\\nOptional: Defaults to true.\",\n \"type\": \"boolean\"\n },\n \"ephemeralContainers\": {\n \"description\": \"List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing\\npod to perform user-initiated actions such as debugging. This list cannot be specified when\\ncreating a pod, and it cannot be modified by updating the pod spec. In order to add an\\nephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.\",\n \"items\": {\n \"description\": \"An EphemeralContainer is a temporary container that you may add to an existing Pod for\\nuser-initiated activities such as debugging. Ephemeral containers have no resource or\\nscheduling guarantees, and they will not be restarted when they exit or when a Pod is\\nremoved or restarted. The kubelet may evict a Pod if an ephemeral container causes the\\nPod to exceed its resource allocation.\\n\\n\\nTo add an ephemeral container, use the ephemeralcontainers subresource of an existing\\nPod. Ephemeral containers may not be removed or restarted.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Lifecycle is not allowed for ephemeral containers.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the ephemeral container specified as a DNS_LABEL.\\nThis name must be unique among all containers, init containers and ephemeral containers.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"Ports are not allowed for ephemeral containers.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources\\nalready allocated to the pod.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for the container to manage the restart behavior of each\\ncontainer within a pod.\\nThis may only be set for init containers. You cannot set this field on\\nephemeral containers.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"Optional: SecurityContext defines the security options the ephemeral container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"targetContainerName\": {\n \"description\": \"If set, the name of the container from PodSpec that this ephemeral container targets.\\nThe ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.\\nIf not set then the ephemeral container uses the namespaces configured in the Pod spec.\\n\\n\\nThe container runtime must implement support for this feature. If the runtime does not\\nsupport namespace targeting then the result of setting this field is undefined.\",\n \"type\": \"string\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"hostAliases\": {\n \"description\": \"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts\\nfile if specified. This is only valid for non-hostNetwork pods.\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\\npod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"hostIPC\": {\n \"description\": \"Use the host's ipc namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostNetwork\": {\n \"description\": \"Host networking requested for this pod. Use the host's network namespace.\\nIf this option is set, the ports that will be used must be specified.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"hostPID\": {\n \"description\": \"Use the host's pid namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostUsers\": {\n \"description\": \"Use the host's user namespace.\\nOptional: Default to true.\\nIf set to true or not present, the pod will be run in the host user namespace, useful\\nfor when the pod needs a feature only available to the host user namespace, such as\\nloading a kernel module with CAP_SYS_MODULE.\\nWhen set to false, a new userns is created for the pod. Setting false is useful for\\nmitigating container breakout vulnerabilities even allowing users to run their\\ncontainers as root without actually having root privileges on the host.\\nThis field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.\",\n \"type\": \"boolean\"\n },\n \"hostname\": {\n \"description\": \"Specifies the hostname of the Pod\\nIf not specified, the pod's hostname will be set to a system-defined value.\",\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.\\nIf specified, these secrets will be passed to individual puller implementations for them to use.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"initContainers\": {\n \"description\": \"List of initialization containers belonging to the pod.\\nInit containers are executed in order prior to containers being started. If any\\ninit container fails, the pod is considered to have failed and is handled according\\nto its restartPolicy. The name for an init container or normal container must be\\nunique among all containers.\\nInit containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.\\nThe resourceRequirements of an init container are taken into account during scheduling\\nby finding the highest request/limit for each resource type, and then using the max of\\nof that value or the sum of the normal containers. Limits are applied to init containers\\nin a similar fashion.\\nInit containers cannot currently be added or removed.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"nodeName\": {\n \"description\": \"NodeName is a request to schedule this pod onto a specific node. If it is non-empty,\\nthe scheduler simply schedules this pod onto that node, assuming that it fits resource\\nrequirements.\",\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is a selector which must be true for the pod to fit on a node.\\nSelector which must match a node's labels for the pod to be scheduled on that node.\\nMore info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"os\": {\n \"description\": \"Specifies the OS of the containers in the pod.\\nSome pod and container fields are restricted if this is set.\\n\\n\\nIf the OS field is set to linux, the following fields must be unset:\\n-securityContext.windowsOptions\\n\\n\\nIf the OS field is set to windows, following fields must be unset:\\n- spec.hostPID\\n- spec.hostIPC\\n- spec.hostUsers\\n- spec.securityContext.seLinuxOptions\\n- spec.securityContext.seccompProfile\\n- spec.securityContext.fsGroup\\n- spec.securityContext.fsGroupChangePolicy\\n- spec.securityContext.sysctls\\n- spec.shareProcessNamespace\\n- spec.securityContext.runAsUser\\n- spec.securityContext.runAsGroup\\n- spec.securityContext.supplementalGroups\\n- spec.containers[*].securityContext.seLinuxOptions\\n- spec.containers[*].securityContext.seccompProfile\\n- spec.containers[*].securityContext.capabilities\\n- spec.containers[*].securityContext.readOnlyRootFilesystem\\n- spec.containers[*].securityContext.privileged\\n- spec.containers[*].securityContext.allowPrivilegeEscalation\\n- spec.containers[*].securityContext.procMount\\n- spec.containers[*].securityContext.runAsUser\\n- spec.containers[*].securityContext.runAsGroup\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name is the name of the operating system. The currently supported values are linux and windows.\\nAdditional value may be defined in future and can be one of:\\nhttps://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration\\nClients should expect to handle additional values and treat unrecognized values in this field as os: null\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"overhead\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.\\nThis field will be autopopulated at admission time by the RuntimeClass admission controller. If\\nthe RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.\\nThe RuntimeClass admission controller will reject Pod create requests which have the overhead already\\nset. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value\\ndefined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md\",\n \"type\": \"object\"\n },\n \"preemptionPolicy\": {\n \"description\": \"PreemptionPolicy is the Policy for preempting pods with lower priority.\\nOne of Never, PreemptLowerPriority.\\nDefaults to PreemptLowerPriority if unset.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"The priority value. Various system components use this field to find the\\npriority of the pod. When Priority Admission Controller is enabled, it\\nprevents users from setting this field. The admission controller populates\\nthis field from PriorityClassName.\\nThe higher the value, the higher the priority.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"priorityClassName\": {\n \"description\": \"If specified, indicates the pod's priority. \\\"system-node-critical\\\" and\\n\\\"system-cluster-critical\\\" are two special keywords which indicate the\\nhighest priorities with the former being the highest priority. Any other\\nname must be defined by creating a PriorityClass object with that name.\\nIf not specified, the pod priority will be default or zero if there is no\\ndefault.\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"If specified, all readiness gates will be evaluated for pod readiness.\\nA pod is ready when all its containers are ready AND\\nall conditions specified in the readiness gates have status equal to \\\"True\\\"\\nMore info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"resourceClaims\": {\n \"description\": \"ResourceClaims defines which ResourceClaims must be allocated\\nand reserved before the Pod is allowed to start. The resources\\nwill be made available to those containers which consume them\\nby name.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable.\",\n \"items\": {\n \"description\": \"PodResourceClaim references exactly one ResourceClaim through a ClaimSource.\\nIt adds a name to it that uniquely identifies the ResourceClaim inside the Pod.\\nContainers that need access to the ResourceClaim reference it with this name.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name uniquely identifies this resource claim inside the pod.\\nThis must be a DNS_LABEL.\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"Source describes where to find the ResourceClaim.\",\n \"properties\": {\n \"resourceClaimName\": {\n \"description\": \"ResourceClaimName is the name of a ResourceClaim object in the same\\nnamespace as this pod.\",\n \"type\": \"string\"\n },\n \"resourceClaimTemplateName\": {\n \"description\": \"ResourceClaimTemplateName is the name of a ResourceClaimTemplate\\nobject in the same namespace as this pod.\\n\\n\\nThe template will be used to create a new ResourceClaim, which will\\nbe bound to this pod. When this pod is deleted, the ResourceClaim\\nwill also be deleted. The pod name and resource name, along with a\\ngenerated component, will be used to form a unique name for the\\nResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.\\n\\n\\nThis field is immutable and no changes will be made to the\\ncorresponding ResourceClaim by the control plane after creating the\\nResourceClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for all containers within the pod.\\nOne of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.\\nDefault to Always.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\",\n \"type\": \"string\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used\\nto run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.\\nIf unset or empty, the \\\"legacy\\\" RuntimeClass will be used, which is an implicit class with an\\nempty definition that uses the default runtime handler.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"If specified, the pod will be dispatched by specified scheduler.\\nIf not specified, the pod will be dispatched by default scheduler.\",\n \"type\": \"string\"\n },\n \"schedulingGates\": {\n \"description\": \"SchedulingGates is an opaque list of values that if specified will block scheduling the pod.\\nIf schedulingGates is not empty, the pod will stay in the SchedulingGated state and the\\nscheduler will not attempt to schedule the pod.\\n\\n\\nSchedulingGates can only be set at pod creation time, and be removed only afterwards.\\n\\n\\nThis is a beta feature enabled by the PodSchedulingReadiness feature gate.\",\n \"items\": {\n \"description\": \"PodSchedulingGate is associated to a Pod to guard its scheduling.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the scheduling gate.\\nEach scheduling gate must have a unique name field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nOptional: Defaults to empty. See type description for default values of each field.\",\n \"properties\": {\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"description\": \"DeprecatedServiceAccount is a depreciated alias for ServiceAccountName.\\nDeprecated: Use serviceAccountName instead.\",\n \"type\": \"string\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run this pod.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\",\n \"type\": \"string\"\n },\n \"setHostnameAsFQDN\": {\n \"description\": \"If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default).\\nIn Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).\\nIn Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\\\\\\\SYSTEM\\\\\\\\CurrentControlSet\\\\\\\\Services\\\\\\\\Tcpip\\\\\\\\Parameters to FQDN.\\nIf a pod does not have FQDN, this has no effect.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"shareProcessNamespace\": {\n \"description\": \"Share a single process namespace between all of the containers in a pod.\\nWhen this is set containers will be able to view and signal processes from other containers\\nin the same pod, and the first process in each container will not be assigned PID 1.\\nHostPID and ShareProcessNamespace cannot both be set.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"subdomain\": {\n \"description\": \"If specified, the fully qualified Pod hostname will be \\\"\\u003chostname\\u003e.\\u003csubdomain\\u003e.\\u003cpod namespace\\u003e.svc.\\u003ccluster domain\\u003e\\\".\\nIf not specified, the pod will not have a domainname at all.\",\n \"type\": \"string\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nIf this value is nil, the default grace period will be used instead.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nDefaults to 30 seconds.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints describes how a group of pods ought to spread across topology\\ndomains. Scheduler will schedule pods in a way which abides by the constraints.\\nAll topologySpreadConstraints are ANDed.\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods.\\nPods that match this label selector are counted to determine the number of pods\\nin their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nMatchLabelKeys cannot be set when LabelSelector isn't set.\\nKeys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P |\\n- if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P P |\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\\n\\n\\nThis is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\\nwhen calculating pod topology spread skew. Options are:\\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating\\npod topology spread skew. Options are:\\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\\nhas a toleration, are included.\\n- Ignore: node taints are ignored. All nodes are included.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\\nthe spread constraint.\\n- DoNotSchedule (default) tells the scheduler not to schedule it.\\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n but giving higher precedence to topologies that would help reduce the\\n skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod\\nif and only if every possible node assignment for that pod would violate\\n\\\"MaxSkew\\\" on some topology.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 3/1/1:\\n| zone1 | zone2 | zone3 |\\n| P P P | P | P |\\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\\nwon't make it *more* imbalanced.\\nIt's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"description\": \"List of volumes that can be mounted by containers belonging to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"name of the volume.\\nMust be a DNS_LABEL and unique within the pod.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"containers\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"racks\": {\n \"description\": \"A list of the named racks in the datacenter, representing independent failure domains. The\\nnumber of racks should match the replication factor in the keyspaces you plan to create, and\\nthe number of racks cannot easily be changed once a datacenter is deployed.\",\n \"items\": {\n \"description\": \"Rack ...\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity rules to set for this rack only. Merged with values from PodTemplateSpec Affinity as well as NodeAffinityLabels. If you wish to override all the default\\nPodAntiAffinity rules, set allowMultipleWorkers to true, otherwise defaults are applied and then these Affinity settings are merged.\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The rack name\",\n \"minLength\": 2,\n \"type\": \"string\"\n },\n \"nodeAffinityLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeAffinityLabels to pin the rack, using node affinity\",\n \"type\": \"object\"\n },\n \"zone\": {\n \"description\": \"Deprecated. Use nodeAffinityLabels instead. DeprecatedZone name to pin the rack, using node affinity\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"ReadOnlyRootFilesystem makes the cassandra container to be run with a read-only root filesystem. Currently only functional when used with the\\nnew k8ssandra-client config builder (Cassandra 4.1 and newer and HCD)\",\n \"type\": \"boolean\"\n },\n \"replaceNodes\": {\n \"description\": \"Deprecated Use CassandraTask replacenode to achieve correct node replacement. A list of pod names that need to be replaced.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"resources\": {\n \"description\": \"Kubernetes resource requests and limits, per pod\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"rollingRestartRequested\": {\n \"description\": \"Deprecated. Use CassandraTask for rolling restarts. Whether to do a rolling restart at the next opportunity. The operator will set this back\\nto false once the restart is in progress.\",\n \"type\": \"boolean\"\n },\n \"serverImage\": {\n \"description\": \"Cassandra server image name. Use of ImageConfig to match ServerVersion is recommended instead of this value.\\nThis value will override anything set in the ImageConfig matching the ServerVersion\\nMore info: https://kubernetes.io/docs/concepts/containers/images\",\n \"type\": \"string\"\n },\n \"serverType\": {\n \"description\": \"Server type: \\\"cassandra\\\", \\\"dse\\\" or \\\"hcd\\\"\",\n \"enum\": [\n \"cassandra\",\n \"dse\",\n \"hcd\"\n ],\n \"type\": \"string\"\n },\n \"serverVersion\": {\n \"description\": \"Version string for config builder,\\nused to generate Cassandra server configuration\",\n \"pattern\": \"(6\\\\.[89]\\\\.\\\\d+)|(3\\\\.11\\\\.\\\\d+)|(4\\\\.\\\\d+\\\\.\\\\d+)|(5\\\\.\\\\d+\\\\.\\\\d+)|(1\\\\.\\\\d+\\\\.\\\\d+)\",\n \"type\": \"string\"\n },\n \"serviceAccount\": {\n \"description\": \"Deprecated DeprecatedServiceAccount Use ServiceAccountName instead, which takes precedence. The k8s service account to use for the server pods\",\n \"type\": \"string\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the Kubernetes service account to use for the server pods. This takes presedence over DeprecatedServiceAccount and both take precedence over\\nsetting it in the PodTemplateSpec.\",\n \"type\": \"string\"\n },\n \"size\": {\n \"description\": \"Desired number of Cassandra server nodes\",\n \"format\": \"int32\",\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"stopped\": {\n \"description\": \"A stopped CassandraDatacenter will have no running server pods, like using \\\"stop\\\" with\\ntraditional System V init scripts. Other Kubernetes resources will be left intact, and volumes\\nwill re-attach when the CassandraDatacenter workload is resumed.\",\n \"type\": \"boolean\"\n },\n \"storageConfig\": {\n \"description\": \"StorageConfig describes the persistent storage request of each server node\",\n \"properties\": {\n \"additionalVolumes\": {\n \"items\": {\n \"description\": \"AdditionalVolumes defines additional storage configurations\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Mount path into cassandra container\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the pvc / volume\",\n \"pattern\": \"[a-z0-9]([-a-z0-9]*[a-z0-9])?\",\n \"type\": \"string\"\n },\n \"pvcSpec\": {\n \"description\": \"PVCSpec is a persistent volume claim spec. Either this or VolumeSource is required.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeSource\": {\n \"description\": \"VolumeSource to mount the volume from (such as ConfigMap / Secret). This or PVCSpec is required.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"cassandraDataVolumeClaimSpec\": {\n \"description\": \"PersistentVolumeClaimSpec describes the common attributes of storage devices\\nand allows a Source for provider-specific attributes\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"superuserSecretName\": {\n \"description\": \"This secret defines the username and password for the Cassandra server superuser.\\nIf it is omitted, we will generate a secret instead.\",\n \"type\": \"string\"\n },\n \"systemLoggerImage\": {\n \"description\": \"Container image for the log tailing sidecar container. Overrides value from ImageConfig SystemLoggerImage\",\n \"type\": \"string\"\n },\n \"systemLoggerResources\": {\n \"description\": \"Kubernetes resource requests and limits per system logger container.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations applied to the Cassandra pod. Note that these cannot be overridden with PodTemplateSpec.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"users\": {\n \"description\": \"Cassandra users to bootstrap\",\n \"items\": {\n \"properties\": {\n \"secretName\": {\n \"type\": \"string\"\n },\n \"superuser\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"secretName\",\n \"superuser\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"clusterName\",\n \"serverType\",\n \"serverVersion\",\n \"size\",\n \"storageConfig\"\n ],\n \"type\": \"string\"\n }\n },\n \"title\": \"Cassandra Datacenter\",\n \"type\": \"object\"\n}", + "version": "cassandra.datastax.com/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "Cassandra Datacenter", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003emeshery-logo-light\u003c/title\u003e\u003cpolygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/\u003e\u003cpolygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/\u003e\u003cpolygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/\u003e\u003cpath d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/\u003e\u003cpath d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/\u003e\u003cpolygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/\u003e\u003cpolygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/\u003e\u003cpath d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/\u003e\u003cpath d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/\u003e\u003cpolygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/CassandraTask.json b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/CassandraTask.json new file mode 100644 index 00000000000..e1a0d6fbbe8 --- /dev/null +++ b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/CassandraTask.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "CassandraTask", + "schema": "{\n \"description\": \"CassandraTask is the Schema for the cassandrajobs API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"CassandraTaskSpec defines the desired state of CassandraTask\",\n \"properties\": {\n \"concurrencyPolicy\": {\n \"description\": \"Specifics if this task can be run concurrently with other active tasks. Valid values are:\\n- \\\"Allow\\\": allows multiple Tasks to run concurrently on Cassandra cluster\\n- \\\"Forbid\\\" (default): only a single task is executed at once\\nThe \\\"Allow\\\" property is only valid if all the other active Tasks have \\\"Allow\\\" as well.\",\n \"type\": \"string\"\n },\n \"datacenter\": {\n \"description\": \"Which datacenter this task is targetting. Note, this must be a datacenter which the current cass-operator\\ncan access\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"API version of the referent.\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"If referring to a piece of an object instead of an entire object, this string\\nshould contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\\nFor example, if the object reference is to a container within a pod, this would take on a value like:\\n\\\"spec.containers{name}\\\" (where \\\"name\\\" refers to the name of the container that triggered\\nthe event) or if no container name is specified \\\"spec.containers[2]\\\" (container with\\nindex 2 in this pod). This syntax is chosen only to have some well-defined way of\\nreferencing a part of an object.\\nTODO: this design is not final and this field is subject to change in the future.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind of the referent.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/\",\n \"type\": \"string\"\n },\n \"resourceVersion\": {\n \"description\": \"Specific resourceVersion to which this reference is made, if any.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency\",\n \"type\": \"string\"\n },\n \"uid\": {\n \"description\": \"UID of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"jobs\": {\n \"description\": \"Jobs defines the jobs this task will execute (and their order)\",\n \"items\": {\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments are additional parameters for the command\",\n \"properties\": {\n \"end_token\": {\n \"type\": \"string\"\n },\n \"jobs\": {\n \"type\": \"integer\"\n },\n \"keyspace_name\": {\n \"type\": \"string\"\n },\n \"new_tokens\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NewTokens is a map of pod names to their newly-assigned tokens. Required for the move\\ncommand, ignored otherwise. Pods referenced in this map must exist; any existing pod not\\nreferenced in this map will not be moved.\",\n \"type\": \"object\"\n },\n \"no_snapshot\": {\n \"type\": \"boolean\"\n },\n \"no_validate\": {\n \"description\": \"Scrub arguments\",\n \"type\": \"boolean\"\n },\n \"pod_name\": {\n \"type\": \"string\"\n },\n \"rack\": {\n \"type\": \"string\"\n },\n \"skip_corrupted\": {\n \"type\": \"boolean\"\n },\n \"source_datacenter\": {\n \"type\": \"string\"\n },\n \"split_output\": {\n \"description\": \"Compaction arguments\",\n \"type\": \"boolean\"\n },\n \"start_token\": {\n \"type\": \"string\"\n },\n \"tables\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"command\": {\n \"description\": \"Command defines what is run against Cassandra pods\",\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"command\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy indicates the behavior n case of failure. Default is Never.\",\n \"type\": \"string\"\n },\n \"scheduledTime\": {\n \"description\": \"ScheduledTime indicates the earliest possible time this task is executed. This does not necessarily\\nequal to the time it is actually executed (if other tasks are blocking for example). If not set,\\nthe task will be executed immediately.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"ttlSecondsAfterFinished\": {\n \"description\": \"TTLSecondsAfterFinished defines how long the completed job will kept before being cleaned up. If set to 0\\nthe task will not be cleaned up by the cass-operator. If unset, the default time (86400s) is used.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Cassandra Task\",\n \"type\": \"object\"\n}", + "version": "control.k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Cassandra Task", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003emeshery-logo-light\u003c/title\u003e\u003cpolygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/\u003e\u003cpolygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/\u003e\u003cpolygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/\u003e\u003cpath d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/\u003e\u003cpath d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/\u003e\u003cpolygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/\u003e\u003cpolygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/\u003e\u003cpath d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/\u003e\u003cpath d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/\u003e\u003cpolygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/ClientConfig.json b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/ClientConfig.json new file mode 100644 index 00000000000..9b0e56bd0a5 --- /dev/null +++ b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/ClientConfig.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "ClientConfig", + "schema": "{\n \"description\": \"ClientConfig is the Schema for the kubeconfigs API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"ClientConfigSpec defines the desired state of KubeConfig\",\n \"properties\": {\n \"contextName\": {\n \"description\": \"ContextName allows to override the object name for context-name. If not set, the ClientConfig.Name is used as context name\",\n \"type\": \"string\"\n },\n \"kubeConfigSecret\": {\n \"description\": \"KubeConfigSecret should reference an existing secret; the actual configuration will be read from\\nthis secret's \\\"kubeconfig\\\" key.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Client Config\",\n \"type\": \"object\"\n}", + "version": "config.k8ssandra.io/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "Client Config", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003emeshery-logo-light\u003c/title\u003e\u003cpolygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/\u003e\u003cpolygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/\u003e\u003cpolygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/\u003e\u003cpath d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/\u003e\u003cpath d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/\u003e\u003cpolygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/\u003e\u003cpolygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/\u003e\u003cpath d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/\u003e\u003cpath d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/\u003e\u003cpolygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/K8ssandraCluster.json b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/K8ssandraCluster.json new file mode 100644 index 00000000000..f0a164d479d --- /dev/null +++ b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/K8ssandraCluster.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "K8ssandraCluster", + "schema": "{\n \"description\": \"K8ssandraCluster is the Schema for the k8ssandraclusters API. The K8ssandraCluster CRD name is also the name of the\\nCassandra cluster (which corresponds to cluster_name in cassandra.yaml).\",\n \"properties\": {\n \"spec\": {\n \"description\": \"K8ssandraClusterSpec defines the desired state of K8ssandraCluster\",\n \"properties\": {\n \"auth\": {\n \"default\": true,\n \"description\": \"Whether to enable authentication in this cluster. The default is true; it is highly recommended to always leave\\nauthentication turned on. When enabled, authentication will be enforced not only on Cassandra nodes, but also on\\nReaper, Medusa and Stargate nodes, if any.\",\n \"type\": \"boolean\"\n },\n \"cassandra\": {\n \"description\": \"Cassandra is a specification of the Cassandra cluster. This includes everything from\\nthe number of datacenters, the k8s cluster where each DC should be deployed, node\\naffinity (via racks), individual C* node settings, JVM settings, and more.\",\n \"properties\": {\n \"additionalSeeds\": {\n \"description\": \"AdditionalSeeds specifies Cassandra node IPs for an existing datacenter. This is\\nprimarily intended for migrations from an existing Cassandra cluster that is not\\nmanaged by k8ssandra-operator. Note that this property should NOT be used to set\\nseeds for a DC that is or will be managed by k8ssandra-operator. k8ssandra-operator\\nalready manages seeds for DCs that it manages. If you have DNS set up such that you\\ncan resolve hostnames for the remote Cassandra cluster, then you can specify hostnames\\nhere; otherwise, use IP addresses.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"cdc\": {\n \"description\": \"CDC defines the desired state for CDC integrations. It can be used to feed mutation events from Cassandra into an Apache Pulsar cluster,\\nfrom where they can be expored to external systems.\",\n \"properties\": {\n \"cdcConcurrentProcessors\": {\n \"type\": \"integer\"\n },\n \"cdcPollIntervalM\": {\n \"type\": \"integer\"\n },\n \"cdcWorkingDir\": {\n \"type\": \"string\"\n },\n \"errorCommitLogReprocessEnabled\": {\n \"type\": \"boolean\"\n },\n \"pulsarAuthParams\": {\n \"type\": \"string\"\n },\n \"pulsarAuthPluginClassName\": {\n \"type\": \"string\"\n },\n \"pulsarBatchDelayInMs\": {\n \"type\": \"integer\"\n },\n \"pulsarKeyBasedBatcher\": {\n \"type\": \"boolean\"\n },\n \"pulsarMaxPendingMessages\": {\n \"type\": \"integer\"\n },\n \"pulsarMaxPendingMessagesAcrossPartitions\": {\n \"type\": \"integer\"\n },\n \"pulsarServiceUrl\": {\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"sslAllowInsecureConnection\": {\n \"type\": \"string\"\n },\n \"sslCipherSuites\": {\n \"type\": \"string\"\n },\n \"sslEnabledProtocols\": {\n \"type\": \"string\"\n },\n \"sslHostnameVerificationEnable\": {\n \"type\": \"string\"\n },\n \"sslKeystorePassword\": {\n \"type\": \"string\"\n },\n \"sslKeystorePath\": {\n \"type\": \"string\"\n },\n \"sslProvider\": {\n \"type\": \"string\"\n },\n \"sslTruststorePassword\": {\n \"type\": \"string\"\n },\n \"sslTruststorePath\": {\n \"type\": \"string\"\n },\n \"sslTruststoreType\": {\n \"type\": \"string\"\n },\n \"topicPrefix\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pulsarServiceUrl\"\n ],\n \"type\": \"object\"\n },\n \"clientEncryptionStores\": {\n \"description\": \"Client encryption stores which are used by Cassandra and Reaper.\",\n \"properties\": {\n \"keystorePasswordSecretRef\": {\n \"description\": \"ref to the secret that contains the keystore password if password stored in different secret than keystoreSecretRef\\nif key isn't specified explicitly, \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"keystoreSecretRef\": {\n \"description\": \"ref to the secret that contains the keystore and optionally its password (which can also be specified through\\nthe keystorePasswordSecretRef field)\\nif keys are not specified, \\\"keystore\\\" entry and a \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"truststorePasswordSecretRef\": {\n \"description\": \"ref to the secret that contains the truststore password if password stored in different secret than keystoreSecretRef\\nif key isn't specified explicitly, \\\"truststore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"truststoreSecretRef\": {\n \"description\": \"ref to the secret that contains the truststore and optionally its password (which can also be specified through\\nthe truststorePasswordSecretRef field)\\nif keys are not specified explicitly, \\\"keystore\\\" entry and a \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"keystoreSecretRef\",\n \"truststoreSecretRef\"\n ],\n \"type\": \"object\"\n },\n \"clusterName\": {\n \"description\": \"Override the Cassandra cluster name. If unspecified, the cluster name will be the same as the K8ssandraCluster\\nCRD name.\",\n \"type\": \"string\"\n },\n \"config\": {\n \"description\": \"CassandraConfig contains configuration settings that are applied to cassandra.yaml, dse.yaml\\nand the various jvm*.options files.\",\n \"properties\": {\n \"cassandraYaml\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"dseYaml\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"jvmOptions\": {\n \"properties\": {\n \"additionalJvm11ServerOptions\": {\n \"description\": \"Jvm11ServerOptions are additional options that will be passed on to the jvm11-server-options file.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalJvm8ServerOptions\": {\n \"description\": \"Jvm8ServerOptions are additional options that will be passed on to the jvm8-server-options file.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalJvmServerOptions\": {\n \"description\": \"JvmServerOptions are additional options that will be passed on to the jvm-server-options file.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalOptions\": {\n \"description\": \"Additional, arbitrary JVM options which are written into the cassandra-env.sh file.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"cassandra_available_processors\": {\n \"description\": \"Available CPU processors.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.available_processors.\",\n \"type\": \"integer\"\n },\n \"cassandra_disable_auth_caches_remote_configuration\": {\n \"description\": \"Disable remote configuration via JMX of auth caches.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.disable_auth_caches_remote_configuration.\",\n \"type\": \"boolean\"\n },\n \"cassandra_expiration_date_overflow_policy\": {\n \"description\": \"Defines how to handle INSERT requests with TTL exceeding the maximum supported expiration\\ndate.\\nPossible values include `REJECT`, `CAP`, `CAP_NOWARN`.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.expiration_date_overflow_policy.\",\n \"type\": \"string\"\n },\n \"cassandra_force_3_0_protocol_version\": {\n \"description\": \"Disabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -Dcassandra.force_3_0_protocol_version=true.\",\n \"type\": \"boolean\"\n },\n \"cassandra_force_default_indexing_page_size\": {\n \"description\": \"Disable dynamic calculation of the page size used when indexing an entire partition (during\\ninitial index build/rebuild).\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.force_default_indexing_page_size.\",\n \"type\": \"boolean\"\n },\n \"cassandra_max_hint_ttl_seconds\": {\n \"description\": \"Imposes an upper bound on hint lifetime below the normal min gc_grace_seconds.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.maxHintTTL.\",\n \"type\": \"integer\"\n },\n \"cassandra_metrics_reporter_config_file\": {\n \"description\": \"Enable pluggable metrics reporter.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.metricsReporterConfigFile.\\nTODO mountable directory\",\n \"type\": \"string\"\n },\n \"cassandra_ring_delay_ms\": {\n \"description\": \"Amount of time in milliseconds that a node waits before joining the ring.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.ring_delay_ms.\",\n \"type\": \"integer\"\n },\n \"cassandra_triggers_directory\": {\n \"description\": \"Default location for the trigger JARs.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.triggers_dir.\\nTODO mountable directory\",\n \"type\": \"string\"\n },\n \"cassandra_write_survey\": {\n \"description\": \"For testing new compaction and compression strategies.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.write_survey.\",\n \"type\": \"boolean\"\n },\n \"debug_disable_contended_annotations\": {\n \"description\": \"Disable honoring user code @Contended annotations.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:-RestrictContended.\",\n \"type\": \"boolean\"\n },\n \"debug_enable_flight_recorder\": {\n \"description\": \"Enable Flight Recorder (Use in production is subject to Oracle licensing).\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+FlightRecorder.\",\n \"type\": \"boolean\"\n },\n \"debug_listen_remote_debuggers\": {\n \"description\": \"Listen for JVM remote debuggers on port 1414.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1414\\\".\",\n \"type\": \"boolean\"\n },\n \"debug_log_compilation\": {\n \"description\": \"Make Cassandra JVM log internal method compilation (developers only).\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+LogCompilation.\",\n \"type\": \"boolean\"\n },\n \"debug_non_safepoints\": {\n \"description\": \"Whether the compiler should generate the necessary metadata for the parts of the code not at\\nsafe points as well. For use with Flight Recorder.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+DebugNonSafepoints.\",\n \"type\": \"boolean\"\n },\n \"debug_preserve_frame_pointer\": {\n \"description\": \"Preserve Frame Pointer.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+PreserveFramePointer.\",\n \"type\": \"boolean\"\n },\n \"debug_unlock_commercial_features\": {\n \"description\": \"Unlock commercial features.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+UnlockCommercialFeatures.\",\n \"type\": \"boolean\"\n },\n \"debug_unlock_diagnostic_vm_options\": {\n \"description\": \"Enabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+UnlockDiagnosticVMOptions.\",\n \"type\": \"boolean\"\n },\n \"gc\": {\n \"default\": \"G1GC\",\n \"description\": \"The name of the garbage collector to use. Depending on the Cassandra version, not all values\\nare supported: Cassandra 3.11 supports only G1GC and CMS; Cassandra 4.0 supports G1GC, ZGC,\\nShenandoah and Graal. This option will unlock the corresponding garbage collector with a\\ndefault configuration; to further tune the GC settings, use the additional JVM options field.\\nUse the special value Custom if you intend to use non-standard garbage collectors.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\",\n \"enum\": [\n \"G1GC\",\n \"CMS\",\n \"ZGC\",\n \"Shenandoah\",\n \"Graal\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"gc_cms_heap_size_young_generation\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Disabled by default. Can only be used when CMS garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -Xmn.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"gc_cms_initiating_occupancy_fraction\": {\n \"description\": \"Defaults to 75. Can only be used when CMS garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:CMSInitiatingOccupancyFraction.\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"gc_cms_max_tenuring_threshold\": {\n \"description\": \"Defaults to 1. Can only be used when CMS garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:MaxTenuringThreshold.\",\n \"type\": \"integer\"\n },\n \"gc_cms_survivor_ratio\": {\n \"description\": \"Defaults to 8. Can only be used when CMS garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:SurvivorRatio.\",\n \"type\": \"integer\"\n },\n \"gc_cms_wait_duration_ms\": {\n \"description\": \"Defaults to 10000. Can only be used when CMS garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:CMSWaitDuration.\",\n \"type\": \"integer\"\n },\n \"gc_g1_conc_threads\": {\n \"description\": \"Concurrent GC Threads. Can only be used when G1 garbage collector is used.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -XX:ConcGCThreads.\",\n \"type\": \"integer\"\n },\n \"gc_g1_initiating_heap_occupancy_percent\": {\n \"description\": \"Initiating Heap Occupancy Percentage. Can only be used when G1 garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -XX:InitiatingHeapOccupancyPercent.\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"gc_g1_max_gc_pause_ms\": {\n \"description\": \"G1GC Max GC Pause in milliseconds. Defaults to 500. Can only be used when G1 garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -XX:MaxGCPauseMillis.\",\n \"type\": \"integer\"\n },\n \"gc_g1_parallel_threads\": {\n \"description\": \"Parallel GC Threads. Can only be used when G1 garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -XX:ParallelGCThreads.\",\n \"type\": \"integer\"\n },\n \"gc_g1_rset_updating_pause_time_percent\": {\n \"description\": \"G1GC Updating Pause Time Percentage. Defaults to 5. Can only be used when G1 garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -XX:G1RSetUpdatingPauseTimePercent.\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"gc_print_application_stopped_time\": {\n \"description\": \"Print GC Application Stopped Time.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintGCApplicationStoppedTime.\",\n \"type\": \"boolean\"\n },\n \"gc_print_date_stamps\": {\n \"description\": \"Print GC Date Stamps. Disabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintGCDateStamps.\",\n \"type\": \"boolean\"\n },\n \"gc_print_details\": {\n \"description\": \"Print GC details.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintGCDetails.\",\n \"type\": \"boolean\"\n },\n \"gc_print_flss_statistics\": {\n \"description\": \"Print FLSS Statistics.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:PrintFLSStatistics=1.\",\n \"type\": \"boolean\"\n },\n \"gc_print_heap\": {\n \"description\": \"Print Heap at GC.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintHeapAtGC.\",\n \"type\": \"boolean\"\n },\n \"gc_print_log_file_size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Size of each log file.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:GCLogFileSize.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"gc_print_number_of_log_files\": {\n \"description\": \"Number of GC log files.\\nDisabled by default. Can only be used when the G1 garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:NumberOfGCLogFiles.\",\n \"type\": \"integer\"\n },\n \"gc_print_promotion_failure\": {\n \"description\": \"Print promotion failure.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintPromotionFailure.\",\n \"type\": \"boolean\"\n },\n \"gc_print_tenuring_distribution\": {\n \"description\": \"Print tenuring distribution.\\nDefaults to false.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintTenuringDistribution.\",\n \"type\": \"boolean\"\n },\n \"gc_print_use_log_file\": {\n \"description\": \"Whether to print GC logs to /var/log/cassandra/gc.log.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -Xloggc:/var/log/cassandra/gc.log.\",\n \"type\": \"boolean\"\n },\n \"gc_print_use_log_file_rotation\": {\n \"description\": \"Use GC Log File Rotation.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+UseGCLogFileRotation.\",\n \"type\": \"boolean\"\n },\n \"heapNewGenSize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Deprecated. Use gc_cms_heap_size_young_generation instead.\\nValid for CMS garbage collector only + Cassandra 3.11.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"heapSize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Deprecated. Use heap_initial_size and heap_max_size instead. If this field is defined,\\nit applies to both max_heap_size and initial_heap_size.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"heap_initial_size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Disabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Xms.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"heap_max_size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Disabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Xmx.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"jdk_allow_attach_self\": {\n \"description\": \"Allow the current VM to attach to itself.\\nDefaults to true.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -Djdk.attach.allowAttachSelf=true.\",\n \"type\": \"boolean\"\n },\n \"jmx_connection_type\": {\n \"description\": \"Cass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nPossible values for 3.11 include `local-no-auth`, `remote-no-auth`, and `remote-dse-unified-auth`. Defaults to `local-no-auth`.\\nPossible values for 4.0 include `local-no-auth`, `remote-no-auth`. Defaults to `local-no-auth`.\",\n \"type\": \"string\"\n },\n \"jmx_port\": {\n \"description\": \"Disabled by default. Defaults to 7199.\\nTODO Make Reaper aware of the JMX port if a non-default port is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\",\n \"type\": \"integer\"\n },\n \"jmx_remote_ssl\": {\n \"description\": \"Cass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nDefaults to false.\\nValid only when JmxConnectionType is \\\"remote-no-auth\\\", \\\"remote-dse-unified-auth\\\".\",\n \"type\": \"boolean\"\n },\n \"jmx_remote_ssl_opts\": {\n \"description\": \"Remote SSL options.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\",\n \"type\": \"string\"\n },\n \"jmx_remote_ssl_require_client_auth\": {\n \"description\": \"Require Client Authentication for remote SSL? Defaults to false.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\",\n \"type\": \"boolean\"\n },\n \"netty_eventloop_maxpendingtasks\": {\n \"description\": \"Defaults to 65536.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dio.netty.eventLoop.maxPendingTasks.\",\n \"type\": \"integer\"\n },\n \"netty_try_reflection_set_accessible\": {\n \"description\": \"Netty setting `io.netty.tryReflectionSetAccessible`.\\nDefaults to true.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -Dio.netty.tryReflectionSetAccessible=true.\",\n \"type\": \"boolean\"\n },\n \"nio_align_direct_memory\": {\n \"description\": \"Align direct memory allocations on page boundaries.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dsun.nio.PageAlignDirectMemory=true.\",\n \"type\": \"boolean\"\n },\n \"nio_maxcachedbuffersize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Defaults to 1048576.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Djdk.nio.maxCachedBufferSize.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"vm_always_pre_touch\": {\n \"description\": \"Ensure all memory is faulted and zeroed on startup.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+AlwaysPreTouch.\",\n \"type\": \"boolean\"\n },\n \"vm_crash_on_out_of_memory_error\": {\n \"description\": \"Disabled by default. Requires `exit_on_out_of_memory_error` to be disabled..\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+CrashOnOutOfMemoryError.\",\n \"type\": \"boolean\"\n },\n \"vm_disable_biased_locking\": {\n \"description\": \"Disable biased locking to avoid biased lock revocation pauses.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:-UseBiasedLocking.\\nNote: the Cass Config Builder option is named use_biased_locking, but setting it to true\\ndisables biased locking.\",\n \"type\": \"boolean\"\n },\n \"vm_disable_perf_shared_mem\": {\n \"description\": \"Disable hsperfdata mmap'ed file.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+PerfDisableSharedMem.\",\n \"type\": \"boolean\"\n },\n \"vm_enable_assertions\": {\n \"description\": \"Enable assertions.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -ea.\",\n \"type\": \"boolean\"\n },\n \"vm_enable_non_root_thread_priority\": {\n \"description\": \"Enable lowering thread priority without being root on linux.\\nSee CASSANDRA-1181 for details.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:ThreadPriorityPolicy=42.\",\n \"type\": \"boolean\"\n },\n \"vm_enable_thread_priorities\": {\n \"description\": \"Enable thread priorities.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+UseThreadPriorities.\",\n \"type\": \"boolean\"\n },\n \"vm_exit_on_out_of_memory_error\": {\n \"description\": \"Disabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+ExitOnOutOfMemoryError.\",\n \"type\": \"boolean\"\n },\n \"vm_guaranteed_safepoint_interval_ms\": {\n \"description\": \"Defaults to 300000 milliseconds.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:GuaranteedSafepointInterval.\",\n \"type\": \"integer\"\n },\n \"vm_heap_dump_on_out_of_memory_error\": {\n \"description\": \"Enabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+HeapDumpOnOutOfMemoryError.\",\n \"type\": \"boolean\"\n },\n \"vm_per_thread_stack_size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Per-thread stack size.\\nDefaults to 256Ki.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Xss.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"vm_prefer_ipv4\": {\n \"description\": \"Prefer binding to IPv4 network interfaces.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Djava.net.preferIPv4Stack=true.\",\n \"type\": \"boolean\"\n },\n \"vm_print_heap_histogram_on_out_of_memory_error\": {\n \"description\": \"Disabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.printHeapHistogramOnOutOfMemoryError.\",\n \"type\": \"boolean\"\n },\n \"vm_resize_tlab\": {\n \"description\": \"Allow resizing of thread-local allocation blocks.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+ResizeTLAB.\",\n \"type\": \"boolean\"\n },\n \"vm_string_table_size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"The size of interned string table. Larger sizes are beneficial to gossip.\\nDefaults to 1000003.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:StringTableSize.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"vm_use_numa\": {\n \"description\": \"Enabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+UseNUMA.\",\n \"type\": \"boolean\"\n },\n \"vm_use_tlab\": {\n \"description\": \"Enable thread-local allocation blocks.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+UseTLAB.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"containers\": {\n \"description\": \"Containers defines containers to be deployed in each Cassandra pod.\\nK8ssandra-operator and cass-operator will create their own containers, which can be referenced here to override specific settings,\\nsuch as mounts or resources request/limits for example.\\nExample:\\n containers:\\n - name: server-system-logger\\n - name: custom-container\\n image: busybox\\n - name: cassandra\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"datacenterName\": {\n \"description\": \"DatacenterName allows to override the name of the Cassandra datacenter. Kubernetes objects will be named after a sanitized version of it if set, and if not metadata.name. In Cassandra the DC name will be overridden by this value.\\nIt may generate some confusion as objects created for the DC will have a different name than the CasandraDatacenter object itself.\\nThis setting can create conflicts if multiple DCs coexist in the same namespace if metadata.name for a DC with no override is set to the same value as the override name of another DC.\\nUse cautiously.\",\n \"type\": \"string\"\n },\n \"datacenters\": {\n \"description\": \"Datacenters a list of the DCs in the cluster.\",\n \"items\": {\n \"properties\": {\n \"cdc\": {\n \"description\": \"CDC defines the desired state for CDC integrations. It can be used to feed mutation events from Cassandra into an Apache Pulsar cluster,\\nfrom where they can be expored to external systems.\",\n \"properties\": {\n \"cdcConcurrentProcessors\": {\n \"type\": \"integer\"\n },\n \"cdcPollIntervalM\": {\n \"type\": \"integer\"\n },\n \"cdcWorkingDir\": {\n \"type\": \"string\"\n },\n \"errorCommitLogReprocessEnabled\": {\n \"type\": \"boolean\"\n },\n \"pulsarAuthParams\": {\n \"type\": \"string\"\n },\n \"pulsarAuthPluginClassName\": {\n \"type\": \"string\"\n },\n \"pulsarBatchDelayInMs\": {\n \"type\": \"integer\"\n },\n \"pulsarKeyBasedBatcher\": {\n \"type\": \"boolean\"\n },\n \"pulsarMaxPendingMessages\": {\n \"type\": \"integer\"\n },\n \"pulsarMaxPendingMessagesAcrossPartitions\": {\n \"type\": \"integer\"\n },\n \"pulsarServiceUrl\": {\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"sslAllowInsecureConnection\": {\n \"type\": \"string\"\n },\n \"sslCipherSuites\": {\n \"type\": \"string\"\n },\n \"sslEnabledProtocols\": {\n \"type\": \"string\"\n },\n \"sslHostnameVerificationEnable\": {\n \"type\": \"string\"\n },\n \"sslKeystorePassword\": {\n \"type\": \"string\"\n },\n \"sslKeystorePath\": {\n \"type\": \"string\"\n },\n \"sslProvider\": {\n \"type\": \"string\"\n },\n \"sslTruststorePassword\": {\n \"type\": \"string\"\n },\n \"sslTruststorePath\": {\n \"type\": \"string\"\n },\n \"sslTruststoreType\": {\n \"type\": \"string\"\n },\n \"topicPrefix\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pulsarServiceUrl\"\n ],\n \"type\": \"object\"\n },\n \"config\": {\n \"description\": \"CassandraConfig contains configuration settings that are applied to cassandra.yaml, dse.yaml\\nand the various jvm*.options files.\",\n \"properties\": {\n \"cassandraYaml\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"dseYaml\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"jvmOptions\": {\n \"properties\": {\n \"additionalJvm11ServerOptions\": {\n \"description\": \"Jvm11ServerOptions are additional options that will be passed on to the jvm11-server-options file.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalJvm8ServerOptions\": {\n \"description\": \"Jvm8ServerOptions are additional options that will be passed on to the jvm8-server-options file.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalJvmServerOptions\": {\n \"description\": \"JvmServerOptions are additional options that will be passed on to the jvm-server-options file.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalOptions\": {\n \"description\": \"Additional, arbitrary JVM options which are written into the cassandra-env.sh file.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"cassandra_available_processors\": {\n \"description\": \"Available CPU processors.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.available_processors.\",\n \"type\": \"integer\"\n },\n \"cassandra_disable_auth_caches_remote_configuration\": {\n \"description\": \"Disable remote configuration via JMX of auth caches.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.disable_auth_caches_remote_configuration.\",\n \"type\": \"boolean\"\n },\n \"cassandra_expiration_date_overflow_policy\": {\n \"description\": \"Defines how to handle INSERT requests with TTL exceeding the maximum supported expiration\\ndate.\\nPossible values include `REJECT`, `CAP`, `CAP_NOWARN`.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.expiration_date_overflow_policy.\",\n \"type\": \"string\"\n },\n \"cassandra_force_3_0_protocol_version\": {\n \"description\": \"Disabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -Dcassandra.force_3_0_protocol_version=true.\",\n \"type\": \"boolean\"\n },\n \"cassandra_force_default_indexing_page_size\": {\n \"description\": \"Disable dynamic calculation of the page size used when indexing an entire partition (during\\ninitial index build/rebuild).\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.force_default_indexing_page_size.\",\n \"type\": \"boolean\"\n },\n \"cassandra_max_hint_ttl_seconds\": {\n \"description\": \"Imposes an upper bound on hint lifetime below the normal min gc_grace_seconds.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.maxHintTTL.\",\n \"type\": \"integer\"\n },\n \"cassandra_metrics_reporter_config_file\": {\n \"description\": \"Enable pluggable metrics reporter.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.metricsReporterConfigFile.\\nTODO mountable directory\",\n \"type\": \"string\"\n },\n \"cassandra_ring_delay_ms\": {\n \"description\": \"Amount of time in milliseconds that a node waits before joining the ring.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.ring_delay_ms.\",\n \"type\": \"integer\"\n },\n \"cassandra_triggers_directory\": {\n \"description\": \"Default location for the trigger JARs.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.triggers_dir.\\nTODO mountable directory\",\n \"type\": \"string\"\n },\n \"cassandra_write_survey\": {\n \"description\": \"For testing new compaction and compression strategies.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.write_survey.\",\n \"type\": \"boolean\"\n },\n \"debug_disable_contended_annotations\": {\n \"description\": \"Disable honoring user code @Contended annotations.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:-RestrictContended.\",\n \"type\": \"boolean\"\n },\n \"debug_enable_flight_recorder\": {\n \"description\": \"Enable Flight Recorder (Use in production is subject to Oracle licensing).\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+FlightRecorder.\",\n \"type\": \"boolean\"\n },\n \"debug_listen_remote_debuggers\": {\n \"description\": \"Listen for JVM remote debuggers on port 1414.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1414\\\".\",\n \"type\": \"boolean\"\n },\n \"debug_log_compilation\": {\n \"description\": \"Make Cassandra JVM log internal method compilation (developers only).\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+LogCompilation.\",\n \"type\": \"boolean\"\n },\n \"debug_non_safepoints\": {\n \"description\": \"Whether the compiler should generate the necessary metadata for the parts of the code not at\\nsafe points as well. For use with Flight Recorder.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+DebugNonSafepoints.\",\n \"type\": \"boolean\"\n },\n \"debug_preserve_frame_pointer\": {\n \"description\": \"Preserve Frame Pointer.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+PreserveFramePointer.\",\n \"type\": \"boolean\"\n },\n \"debug_unlock_commercial_features\": {\n \"description\": \"Unlock commercial features.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+UnlockCommercialFeatures.\",\n \"type\": \"boolean\"\n },\n \"debug_unlock_diagnostic_vm_options\": {\n \"description\": \"Enabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+UnlockDiagnosticVMOptions.\",\n \"type\": \"boolean\"\n },\n \"gc\": {\n \"default\": \"G1GC\",\n \"description\": \"The name of the garbage collector to use. Depending on the Cassandra version, not all values\\nare supported: Cassandra 3.11 supports only G1GC and CMS; Cassandra 4.0 supports G1GC, ZGC,\\nShenandoah and Graal. This option will unlock the corresponding garbage collector with a\\ndefault configuration; to further tune the GC settings, use the additional JVM options field.\\nUse the special value Custom if you intend to use non-standard garbage collectors.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\",\n \"enum\": [\n \"G1GC\",\n \"CMS\",\n \"ZGC\",\n \"Shenandoah\",\n \"Graal\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"gc_cms_heap_size_young_generation\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Disabled by default. Can only be used when CMS garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -Xmn.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"gc_cms_initiating_occupancy_fraction\": {\n \"description\": \"Defaults to 75. Can only be used when CMS garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:CMSInitiatingOccupancyFraction.\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"gc_cms_max_tenuring_threshold\": {\n \"description\": \"Defaults to 1. Can only be used when CMS garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:MaxTenuringThreshold.\",\n \"type\": \"integer\"\n },\n \"gc_cms_survivor_ratio\": {\n \"description\": \"Defaults to 8. Can only be used when CMS garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:SurvivorRatio.\",\n \"type\": \"integer\"\n },\n \"gc_cms_wait_duration_ms\": {\n \"description\": \"Defaults to 10000. Can only be used when CMS garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:CMSWaitDuration.\",\n \"type\": \"integer\"\n },\n \"gc_g1_conc_threads\": {\n \"description\": \"Concurrent GC Threads. Can only be used when G1 garbage collector is used.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -XX:ConcGCThreads.\",\n \"type\": \"integer\"\n },\n \"gc_g1_initiating_heap_occupancy_percent\": {\n \"description\": \"Initiating Heap Occupancy Percentage. Can only be used when G1 garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -XX:InitiatingHeapOccupancyPercent.\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"gc_g1_max_gc_pause_ms\": {\n \"description\": \"G1GC Max GC Pause in milliseconds. Defaults to 500. Can only be used when G1 garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -XX:MaxGCPauseMillis.\",\n \"type\": \"integer\"\n },\n \"gc_g1_parallel_threads\": {\n \"description\": \"Parallel GC Threads. Can only be used when G1 garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -XX:ParallelGCThreads.\",\n \"type\": \"integer\"\n },\n \"gc_g1_rset_updating_pause_time_percent\": {\n \"description\": \"G1GC Updating Pause Time Percentage. Defaults to 5. Can only be used when G1 garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -XX:G1RSetUpdatingPauseTimePercent.\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"gc_print_application_stopped_time\": {\n \"description\": \"Print GC Application Stopped Time.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintGCApplicationStoppedTime.\",\n \"type\": \"boolean\"\n },\n \"gc_print_date_stamps\": {\n \"description\": \"Print GC Date Stamps. Disabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintGCDateStamps.\",\n \"type\": \"boolean\"\n },\n \"gc_print_details\": {\n \"description\": \"Print GC details.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintGCDetails.\",\n \"type\": \"boolean\"\n },\n \"gc_print_flss_statistics\": {\n \"description\": \"Print FLSS Statistics.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:PrintFLSStatistics=1.\",\n \"type\": \"boolean\"\n },\n \"gc_print_heap\": {\n \"description\": \"Print Heap at GC.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintHeapAtGC.\",\n \"type\": \"boolean\"\n },\n \"gc_print_log_file_size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Size of each log file.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:GCLogFileSize.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"gc_print_number_of_log_files\": {\n \"description\": \"Number of GC log files.\\nDisabled by default. Can only be used when the G1 garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:NumberOfGCLogFiles.\",\n \"type\": \"integer\"\n },\n \"gc_print_promotion_failure\": {\n \"description\": \"Print promotion failure.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintPromotionFailure.\",\n \"type\": \"boolean\"\n },\n \"gc_print_tenuring_distribution\": {\n \"description\": \"Print tenuring distribution.\\nDefaults to false.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintTenuringDistribution.\",\n \"type\": \"boolean\"\n },\n \"gc_print_use_log_file\": {\n \"description\": \"Whether to print GC logs to /var/log/cassandra/gc.log.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -Xloggc:/var/log/cassandra/gc.log.\",\n \"type\": \"boolean\"\n },\n \"gc_print_use_log_file_rotation\": {\n \"description\": \"Use GC Log File Rotation.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+UseGCLogFileRotation.\",\n \"type\": \"boolean\"\n },\n \"heapNewGenSize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Deprecated. Use gc_cms_heap_size_young_generation instead.\\nValid for CMS garbage collector only + Cassandra 3.11.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"heapSize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Deprecated. Use heap_initial_size and heap_max_size instead. If this field is defined,\\nit applies to both max_heap_size and initial_heap_size.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"heap_initial_size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Disabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Xms.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"heap_max_size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Disabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Xmx.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"jdk_allow_attach_self\": {\n \"description\": \"Allow the current VM to attach to itself.\\nDefaults to true.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -Djdk.attach.allowAttachSelf=true.\",\n \"type\": \"boolean\"\n },\n \"jmx_connection_type\": {\n \"description\": \"Cass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nPossible values for 3.11 include `local-no-auth`, `remote-no-auth`, and `remote-dse-unified-auth`. Defaults to `local-no-auth`.\\nPossible values for 4.0 include `local-no-auth`, `remote-no-auth`. Defaults to `local-no-auth`.\",\n \"type\": \"string\"\n },\n \"jmx_port\": {\n \"description\": \"Disabled by default. Defaults to 7199.\\nTODO Make Reaper aware of the JMX port if a non-default port is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\",\n \"type\": \"integer\"\n },\n \"jmx_remote_ssl\": {\n \"description\": \"Cass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nDefaults to false.\\nValid only when JmxConnectionType is \\\"remote-no-auth\\\", \\\"remote-dse-unified-auth\\\".\",\n \"type\": \"boolean\"\n },\n \"jmx_remote_ssl_opts\": {\n \"description\": \"Remote SSL options.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\",\n \"type\": \"string\"\n },\n \"jmx_remote_ssl_require_client_auth\": {\n \"description\": \"Require Client Authentication for remote SSL? Defaults to false.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\",\n \"type\": \"boolean\"\n },\n \"netty_eventloop_maxpendingtasks\": {\n \"description\": \"Defaults to 65536.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dio.netty.eventLoop.maxPendingTasks.\",\n \"type\": \"integer\"\n },\n \"netty_try_reflection_set_accessible\": {\n \"description\": \"Netty setting `io.netty.tryReflectionSetAccessible`.\\nDefaults to true.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -Dio.netty.tryReflectionSetAccessible=true.\",\n \"type\": \"boolean\"\n },\n \"nio_align_direct_memory\": {\n \"description\": \"Align direct memory allocations on page boundaries.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dsun.nio.PageAlignDirectMemory=true.\",\n \"type\": \"boolean\"\n },\n \"nio_maxcachedbuffersize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Defaults to 1048576.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Djdk.nio.maxCachedBufferSize.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"vm_always_pre_touch\": {\n \"description\": \"Ensure all memory is faulted and zeroed on startup.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+AlwaysPreTouch.\",\n \"type\": \"boolean\"\n },\n \"vm_crash_on_out_of_memory_error\": {\n \"description\": \"Disabled by default. Requires `exit_on_out_of_memory_error` to be disabled..\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+CrashOnOutOfMemoryError.\",\n \"type\": \"boolean\"\n },\n \"vm_disable_biased_locking\": {\n \"description\": \"Disable biased locking to avoid biased lock revocation pauses.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:-UseBiasedLocking.\\nNote: the Cass Config Builder option is named use_biased_locking, but setting it to true\\ndisables biased locking.\",\n \"type\": \"boolean\"\n },\n \"vm_disable_perf_shared_mem\": {\n \"description\": \"Disable hsperfdata mmap'ed file.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+PerfDisableSharedMem.\",\n \"type\": \"boolean\"\n },\n \"vm_enable_assertions\": {\n \"description\": \"Enable assertions.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -ea.\",\n \"type\": \"boolean\"\n },\n \"vm_enable_non_root_thread_priority\": {\n \"description\": \"Enable lowering thread priority without being root on linux.\\nSee CASSANDRA-1181 for details.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:ThreadPriorityPolicy=42.\",\n \"type\": \"boolean\"\n },\n \"vm_enable_thread_priorities\": {\n \"description\": \"Enable thread priorities.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+UseThreadPriorities.\",\n \"type\": \"boolean\"\n },\n \"vm_exit_on_out_of_memory_error\": {\n \"description\": \"Disabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+ExitOnOutOfMemoryError.\",\n \"type\": \"boolean\"\n },\n \"vm_guaranteed_safepoint_interval_ms\": {\n \"description\": \"Defaults to 300000 milliseconds.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:GuaranteedSafepointInterval.\",\n \"type\": \"integer\"\n },\n \"vm_heap_dump_on_out_of_memory_error\": {\n \"description\": \"Enabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+HeapDumpOnOutOfMemoryError.\",\n \"type\": \"boolean\"\n },\n \"vm_per_thread_stack_size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Per-thread stack size.\\nDefaults to 256Ki.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Xss.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"vm_prefer_ipv4\": {\n \"description\": \"Prefer binding to IPv4 network interfaces.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Djava.net.preferIPv4Stack=true.\",\n \"type\": \"boolean\"\n },\n \"vm_print_heap_histogram_on_out_of_memory_error\": {\n \"description\": \"Disabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.printHeapHistogramOnOutOfMemoryError.\",\n \"type\": \"boolean\"\n },\n \"vm_resize_tlab\": {\n \"description\": \"Allow resizing of thread-local allocation blocks.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+ResizeTLAB.\",\n \"type\": \"boolean\"\n },\n \"vm_string_table_size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"The size of interned string table. Larger sizes are beneficial to gossip.\\nDefaults to 1000003.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:StringTableSize.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"vm_use_numa\": {\n \"description\": \"Enabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+UseNUMA.\",\n \"type\": \"boolean\"\n },\n \"vm_use_tlab\": {\n \"description\": \"Enable thread-local allocation blocks.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+UseTLAB.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"containers\": {\n \"description\": \"Containers defines containers to be deployed in each Cassandra pod.\\nK8ssandra-operator and cass-operator will create their own containers, which can be referenced here to override specific settings,\\nsuch as mounts or resources request/limits for example.\\nExample:\\n containers:\\n - name: server-system-logger\\n - name: custom-container\\n image: busybox\\n - name: cassandra\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"datacenterName\": {\n \"description\": \"DatacenterName allows to override the name of the Cassandra datacenter. Kubernetes objects will be named after a sanitized version of it if set, and if not metadata.name. In Cassandra the DC name will be overridden by this value.\\nIt may generate some confusion as objects created for the DC will have a different name than the CasandraDatacenter object itself.\\nThis setting can create conflicts if multiple DCs coexist in the same namespace if metadata.name for a DC with no override is set to the same value as the override name of another DC.\\nUse cautiously.\",\n \"type\": \"string\"\n },\n \"dseWorkloads\": {\n \"properties\": {\n \"analyticsEnabled\": {\n \"type\": \"boolean\"\n },\n \"graphEnabled\": {\n \"type\": \"boolean\"\n },\n \"searchEnabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"extraVolumes\": {\n \"description\": \"Volumes defines additional volumes to be added to each Cassandra pod.\\nIf the volume uses a PersistentVolumeClaim, the PVC will be managed by the statefulset.\",\n \"properties\": {\n \"pvcs\": {\n \"description\": \"PVCs defines additional volumes to be added to each Cassandra pod and managed by the statefulset.\\nSuch volumes are automatically mounted by cass-operator into the cassandra containers.\",\n \"items\": {\n \"description\": \"AdditionalVolumes defines additional storage configurations\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Mount path into cassandra container\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the pvc / volume\",\n \"pattern\": \"[a-z0-9]([-a-z0-9]*[a-z0-9])?\",\n \"type\": \"string\"\n },\n \"pvcSpec\": {\n \"description\": \"PVCSpec is a persistent volume claim spec. Either this or VolumeSource is required.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeSource\": {\n \"description\": \"VolumeSource to mount the volume from (such as ConfigMap / Secret). This or PVCSpec is required.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"description\": \"Volumes defines volumes to be added to each Cassandra pod.\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"name of the volume.\\nMust be a DNS_LABEL and unique within the pod.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"initContainers\": {\n \"description\": \"InitContainers defines init-containers to be deployed in each Cassandra pod.\\nK8ssandra-operator and cass-operator will create their own init-containers, which can be referenced here to control ordering or override specific settings\\nsuch as mounts or resources request/limits for example.\\nOnly the name of the k8ssandra-operator/cass-operator init-containers is required, not their full definition which will be created by the operators.\\nExample:\\n initContainers:\\n - name: server-config-init\\n - name: custom-init-container\\n image: busybox\\n - name: medusa-restore\\nOtherwise init-containers referenced here will be injected in first position\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"jmxInitContainerImage\": {\n \"description\": \"Deprecated: JMX security is now based on CQL roles. We don't need an init container to configure JMX\\nauthentication anymore. The value of this field will be ignored.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"k8sContext\": {\n \"type\": \"string\"\n },\n \"managementApiAuth\": {\n \"description\": \"ManagementApiAuth defines the authentication settings for the management API in the Cassandra pods.\",\n \"properties\": {\n \"insecure\": {\n \"type\": \"object\"\n },\n \"manual\": {\n \"properties\": {\n \"clientSecretName\": {\n \"type\": \"string\"\n },\n \"serverSecretName\": {\n \"type\": \"string\"\n },\n \"skipSecretValidation\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"clientSecretName\",\n \"serverSecretName\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"commonAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"annotations that will be applied to all components\\ncreated by the CRD\",\n \"type\": \"object\"\n },\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"labels that will be applied to all components\\ncreated by the CRD\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n },\n \"pods\": {\n \"description\": \"labels/annotations for the pod components\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"services\": {\n \"description\": \"labels/annotations for all of the CassandraDatacenter service components\",\n \"properties\": {\n \"additionalSeedService\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"allPodsService\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"dcService\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nodePortService\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"seedService\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"mgmtAPIHeap\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"MgmtAPIHeap defines the amount of memory devoted to the management\\napi heap.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"networking\": {\n \"description\": \"Networking enables host networking and configures a NodePort ports.\",\n \"properties\": {\n \"hostNetwork\": {\n \"type\": \"boolean\"\n },\n \"nodePort\": {\n \"properties\": {\n \"internode\": {\n \"type\": \"integer\"\n },\n \"internodeSSL\": {\n \"type\": \"integer\"\n },\n \"native\": {\n \"type\": \"integer\"\n },\n \"nativeSSL\": {\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"perNodeConfigInitContainerImage\": {\n \"default\": \"mikefarah/yq:4\",\n \"description\": \"The image to use in each Cassandra pod for the (short-lived) init container that merges global and perNodeConfig\\nconfiguration. This is only useful when PerNodeConfigMapRef is set.\\nThe default is \\\"mikefarah/yq:4\\\".\",\n \"type\": \"string\"\n },\n \"perNodeConfigMapRef\": {\n \"description\": \"PerNodeConfigMapRef is a reference to a ConfigMap that contains per-node configuration for\\nthis DC. The ConfigMap is expected to have entries in the following form:\\n\\u003cpod-name\\u003e_\\u003cfile-name\\u003e.yaml, where \\u003cpod-name\\u003e is the name of the pod and \\u003cfile-name\\u003e is the\\nname of a configuration file (typically, cassandra.yaml). The value of the entry is expected\\nto be a YAML fragment that contains the per-node configuration for each pod. When the pod is\\nstarted, the per-node ConfigMap is mounted and the contents of each entry corresponding to\\nthe pod are merged into their respective configuration files.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"podSecurityContext\": {\n \"description\": \"PodSecurityContext defines the security context for the Cassandra pods.\",\n \"properties\": {\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"racks\": {\n \"description\": \"Racks is a list of named racks. Note that racks are used to create node affinity. //\",\n \"items\": {\n \"description\": \"Rack ...\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity rules to set for this rack only. Merged with values from PodTemplateSpec Affinity as well as NodeAffinityLabels. If you wish to override all the default\\nPodAntiAffinity rules, set allowMultipleWorkers to true, otherwise defaults are applied and then these Affinity settings are merged.\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The rack name\",\n \"minLength\": 2,\n \"type\": \"string\"\n },\n \"nodeAffinityLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeAffinityLabels to pin the rack, using node affinity\",\n \"type\": \"object\"\n },\n \"zone\": {\n \"description\": \"Deprecated. Use nodeAffinityLabels instead. DeprecatedZone name to pin the rack, using node affinity\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"resources\": {\n \"description\": \"Resources is the cpu and memory resources for the cassandra container.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serverImage\": {\n \"description\": \"ServerImage is the image for the cassandra container. Note that this should be a\\nmanagement-api image. If left empty the operator will choose a default image based\\non ServerVersion.\",\n \"type\": \"string\"\n },\n \"serverVersion\": {\n \"description\": \"ServerVersion is the Cassandra or DSE version. The following versions are supported:\\n- Cassandra: 3.11.X, 4.X.X and 5.X.X\\n- DSE: 6.8.X, 7.x.x\\n- HCD: 1.0.x\",\n \"pattern\": \"(\\\\d+\\\\.\\\\d+\\\\.\\\\d+)\",\n \"type\": \"string\"\n },\n \"serviceAccount\": {\n \"description\": \"The k8s service account to use for the Cassandra pods\",\n \"type\": \"string\"\n },\n \"size\": {\n \"description\": \"Size is the number Cassandra pods to deploy in this datacenter.\\nThis number does not include Stargate instances.\",\n \"format\": \"int32\",\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"softPodAntiAffinity\": {\n \"description\": \"SoftPodAntiAffinity sets whether multiple Cassandra instances can be scheduled on the same node.\\nThis should normally be false to ensure cluster resilience but may be set true for test/dev scenarios to minimise\\nthe number of nodes required.\",\n \"type\": \"boolean\"\n },\n \"stargate\": {\n \"description\": \"Stargate defines the desired deployment characteristics for Stargate in this datacenter. Leave nil to skip\\ndeploying Stargate in this datacenter.\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity is the affinity to apply to all the Stargate pods.\\nLeave nil to let the controller reuse the same affinity rules used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"allowStargateOnDataNodes\": {\n \"default\": false,\n \"description\": \"AllowStargateOnDataNodes allows Stargate pods to be scheduled on a worker node already hosting data pods for this\\ndatacenter. The default is false, which means that Stargate pods will be scheduled on separate worker nodes.\\nNote: if the datacenter pods have HostNetwork:true, then the Stargate pods will inherit of it, in which case it\\nis possible that Stargate nodes won't be allowed to sit on data nodes even if this property is set to true,\\nbecause of port conflicts on the same IP address.\",\n \"type\": \"boolean\"\n },\n \"authOptions\": {\n \"description\": \"Authentication options.\",\n \"properties\": {\n \"apiAuthMethod\": {\n \"default\": \"Table\",\n \"description\": \"The method to use for authenticating requests to the Stargate APIs. Stargate currently has\\ntwo authentication / authorization methods:\\n- Table: table-based;\\n- JWT: JSON web token (JWT)-based.\\nThe methods are mutually exclusive. The default method is Table.\",\n \"enum\": [\n \"Table\",\n \"JWT\"\n ],\n \"type\": \"string\"\n },\n \"providerUrl\": {\n \"description\": \"Required when using JWT authentication method, ignored otherwise.\",\n \"type\": \"string\"\n },\n \"tokenTtlSeconds\": {\n \"description\": \"The time-to-live in seconds of an API authentication token. Valid only for the Table\\nauthentication method. By default, the token persists for 30 minutes with a sliding window.\\nEach use of the token to authenticate resets the 30-minute window. A token created and used\\nafter 29 minutes will authenticate a request, but if 31 minutes passes before use, the token\\nwill no longer exist.\\nDefault is 1800 seconds (30 minutes).\",\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"cassandraConfigMapRef\": {\n \"description\": \"CassandraConfigMapRef is a reference to a ConfigMap that holds Cassandra configuration.\\nThe map should have a key named cassandra_yaml.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"containerImage\": {\n \"default\": {\n \"repository\": \"stargateio\",\n \"tag\": \"v1.0.77\"\n },\n \"description\": \"ContainerImage is the image characteristics to use for Stargate containers. Leave nil\\nto use a default image.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"heapSize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"default\": \"256Mi\",\n \"description\": \"HeapSize sets the JVM heap size to use for Stargate. If no Resources are specified, this\\nvalue will also be used to set a default memory request and limit for the Stargate pods:\\nthese will be set to HeapSize x2 and x4, respectively.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"livenessProbe\": {\n \"description\": \"LivenessProbe sets the Stargate liveness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"description\": \"labels and annotations for Stargate resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"labels/annotations that will be applied to all components\\ncreated by the CRD\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"pods\": {\n \"description\": \"labels/annotations for the pod components\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"description\": \"labels/annotations for the service component\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is an optional map of label keys and values to restrict the scheduling of Stargate nodes to workers\\nwith matching labels.\\nLeave nil to let the controller reuse the same node selectors used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector\",\n \"type\": \"object\"\n },\n \"racks\": {\n \"description\": \"Racks allow customizing Stargate characteristics for specific racks in the datacenter.\",\n \"items\": {\n \"description\": \"StargateRackTemplate defines custom rules for Stargate pods in a given rack.\\nThese rules will be merged with rules defined at datacenter level in a StargateDatacenterTemplate; rack-level rules\\nhave precedence over datacenter-level ones.\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity is the affinity to apply to all the Stargate pods.\\nLeave nil to let the controller reuse the same affinity rules used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"allowStargateOnDataNodes\": {\n \"default\": false,\n \"description\": \"AllowStargateOnDataNodes allows Stargate pods to be scheduled on a worker node already hosting data pods for this\\ndatacenter. The default is false, which means that Stargate pods will be scheduled on separate worker nodes.\\nNote: if the datacenter pods have HostNetwork:true, then the Stargate pods will inherit of it, in which case it\\nis possible that Stargate nodes won't be allowed to sit on data nodes even if this property is set to true,\\nbecause of port conflicts on the same IP address.\",\n \"type\": \"boolean\"\n },\n \"authOptions\": {\n \"description\": \"Authentication options.\",\n \"properties\": {\n \"apiAuthMethod\": {\n \"default\": \"Table\",\n \"description\": \"The method to use for authenticating requests to the Stargate APIs. Stargate currently has\\ntwo authentication / authorization methods:\\n- Table: table-based;\\n- JWT: JSON web token (JWT)-based.\\nThe methods are mutually exclusive. The default method is Table.\",\n \"enum\": [\n \"Table\",\n \"JWT\"\n ],\n \"type\": \"string\"\n },\n \"providerUrl\": {\n \"description\": \"Required when using JWT authentication method, ignored otherwise.\",\n \"type\": \"string\"\n },\n \"tokenTtlSeconds\": {\n \"description\": \"The time-to-live in seconds of an API authentication token. Valid only for the Table\\nauthentication method. By default, the token persists for 30 minutes with a sliding window.\\nEach use of the token to authenticate resets the 30-minute window. A token created and used\\nafter 29 minutes will authenticate a request, but if 31 minutes passes before use, the token\\nwill no longer exist.\\nDefault is 1800 seconds (30 minutes).\",\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"cassandraConfigMapRef\": {\n \"description\": \"CassandraConfigMapRef is a reference to a ConfigMap that holds Cassandra configuration.\\nThe map should have a key named cassandra_yaml.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"containerImage\": {\n \"default\": {\n \"repository\": \"stargateio\",\n \"tag\": \"v1.0.77\"\n },\n \"description\": \"ContainerImage is the image characteristics to use for Stargate containers. Leave nil\\nto use a default image.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"heapSize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"default\": \"256Mi\",\n \"description\": \"HeapSize sets the JVM heap size to use for Stargate. If no Resources are specified, this\\nvalue will also be used to set a default memory request and limit for the Stargate pods:\\nthese will be set to HeapSize x2 and x4, respectively.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"livenessProbe\": {\n \"description\": \"LivenessProbe sets the Stargate liveness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"description\": \"labels and annotations for Stargate resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"labels/annotations that will be applied to all components\\ncreated by the CRD\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"pods\": {\n \"description\": \"labels/annotations for the pod components\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"description\": \"labels/annotations for the service component\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name is the rack name. It must correspond to an existing rack name in the CassandraDatacenter resource where\\nStargate is being deployed, otherwise it will be ignored.\",\n \"minLength\": 2,\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is an optional map of label keys and values to restrict the scheduling of Stargate nodes to workers\\nwith matching labels.\\nLeave nil to let the controller reuse the same node selectors used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector\",\n \"type\": \"object\"\n },\n \"readinessProbe\": {\n \"description\": \"ReadinessProbe sets the Stargate readiness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Resources is the Kubernetes resource requests and limits to apply, per Stargate pod. Leave\\nnil to use defaults.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"secretsProvider\": {\n \"default\": \"internal\",\n \"description\": \"SecretsProvider defines whether the secrets used for credentials and certs will be backed\\nby an external secret backend. This moves the responsibility of generating and storing\\nsecrets from the operators to the user and will rely on a mutating webhook to inject\\nthe secrets into the necessary resources\",\n \"enum\": [\n \"internal\",\n \"external\"\n ],\n \"type\": \"string\"\n },\n \"serviceAccount\": {\n \"default\": \"default\",\n \"description\": \"ServiceAccount is the service account name to use for Stargate pods.\",\n \"type\": \"string\"\n },\n \"telemetry\": {\n \"description\": \"Telemetry defines the desired telemetry integrations to deploy targeting the Stargate pods for all DCs in this cluster\\n(unless overridden by DC specific settings)\",\n \"properties\": {\n \"cassandra\": {\n \"properties\": {\n \"endpoint\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"relabels\": {\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion.\\nIt defines `\\u003cmetric_relabel_configs\\u003e`-section of Prometheus configuration.\\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"mcac\": {\n \"properties\": {\n \"enabled\": {\n \"description\": \"enabled sets whether MCAC (legacy metrics endpoint) is enabled.\\nThis is considered true by default.\",\n \"type\": \"boolean\"\n },\n \"metricFilters\": {\n \"description\": \"MetricFilters allows passing filters to MCAC in order to reduce the amount of extracted metrics.\\nNot setting this field will result in the default filters being used:\\n- \\\"deny:org.apache.cassandra.metrics.Table\\\"\\n- \\\"deny:org.apache.cassandra.metrics.table\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_ss_table_count\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.LiveSSTableCount\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_disk_space_used\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.LiveDiskSpaceUsed\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Pending\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Memtable\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Compaction\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.read\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.write\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.range\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.coordinator\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.dropped_mutations\\\"\\nSetting it to an empty list will result in all metrics being extracted.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"prometheus\": {\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"CommonLabels are applied to all serviceMonitors created.\",\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enable the creation of Prometheus serviceMonitors for this resource (Cassandra or Stargate).\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"vector\": {\n \"properties\": {\n \"components\": {\n \"properties\": {\n \"sinks\": {\n \"description\": \"Sinks is the list of sinks to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the sink.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the sink.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the sink.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sources\": {\n \"description\": \"Sources is the list of sources to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the source.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of the source.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"transforms\": {\n \"description\": \"Transforms is the list of transforms to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the transform.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the transform.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the transform.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enabled enables the Vector agent for this resource (Cassandra, Reaper or Stargate).\\nEnabling the vector agent will inject a sidecar container into the pod.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image is the name of the Vector image to use. If not set, the default image will be used.\\nkube:default=\\\"timberio/vector:0.26.0-alpine\\\"\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resources is the resource requirements for the Vector agent.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrapeInterval\": {\n \"description\": \"ScrapeInterval is the interval at which the Vector agent will scrape the metrics endpoint.\\nUse values like 30s, 1m, 5m.\\nkube:default=30s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations are tolerations to apply to the Stargate pods.\\nLeave nil to let the controller reuse the same tolerations used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readinessProbe\": {\n \"description\": \"ReadinessProbe sets the Stargate readiness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Resources is the Kubernetes resource requests and limits to apply, per Stargate pod. Leave\\nnil to use defaults.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"secretsProvider\": {\n \"default\": \"internal\",\n \"description\": \"SecretsProvider defines whether the secrets used for credentials and certs will be backed\\nby an external secret backend. This moves the responsibility of generating and storing\\nsecrets from the operators to the user and will rely on a mutating webhook to inject\\nthe secrets into the necessary resources\",\n \"enum\": [\n \"internal\",\n \"external\"\n ],\n \"type\": \"string\"\n },\n \"serviceAccount\": {\n \"default\": \"default\",\n \"description\": \"ServiceAccount is the service account name to use for Stargate pods.\",\n \"type\": \"string\"\n },\n \"size\": {\n \"default\": 1,\n \"description\": \"Size is the number of Stargate instances to deploy in each datacenter. They will be spread evenly across racks.\",\n \"format\": \"int32\",\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"telemetry\": {\n \"description\": \"Telemetry defines the desired telemetry integrations to deploy targeting the Stargate pods for all DCs in this cluster\\n(unless overridden by DC specific settings)\",\n \"properties\": {\n \"cassandra\": {\n \"properties\": {\n \"endpoint\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"relabels\": {\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion.\\nIt defines `\\u003cmetric_relabel_configs\\u003e`-section of Prometheus configuration.\\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"mcac\": {\n \"properties\": {\n \"enabled\": {\n \"description\": \"enabled sets whether MCAC (legacy metrics endpoint) is enabled.\\nThis is considered true by default.\",\n \"type\": \"boolean\"\n },\n \"metricFilters\": {\n \"description\": \"MetricFilters allows passing filters to MCAC in order to reduce the amount of extracted metrics.\\nNot setting this field will result in the default filters being used:\\n- \\\"deny:org.apache.cassandra.metrics.Table\\\"\\n- \\\"deny:org.apache.cassandra.metrics.table\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_ss_table_count\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.LiveSSTableCount\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_disk_space_used\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.LiveDiskSpaceUsed\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Pending\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Memtable\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Compaction\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.read\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.write\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.range\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.coordinator\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.dropped_mutations\\\"\\nSetting it to an empty list will result in all metrics being extracted.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"prometheus\": {\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"CommonLabels are applied to all serviceMonitors created.\",\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enable the creation of Prometheus serviceMonitors for this resource (Cassandra or Stargate).\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"vector\": {\n \"properties\": {\n \"components\": {\n \"properties\": {\n \"sinks\": {\n \"description\": \"Sinks is the list of sinks to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the sink.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the sink.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the sink.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sources\": {\n \"description\": \"Sources is the list of sources to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the source.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of the source.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"transforms\": {\n \"description\": \"Transforms is the list of transforms to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the transform.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the transform.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the transform.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enabled enables the Vector agent for this resource (Cassandra, Reaper or Stargate).\\nEnabling the vector agent will inject a sidecar container into the pod.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image is the name of the Vector image to use. If not set, the default image will be used.\\nkube:default=\\\"timberio/vector:0.26.0-alpine\\\"\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resources is the resource requirements for the Vector agent.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrapeInterval\": {\n \"description\": \"ScrapeInterval is the interval at which the Vector agent will scrape the metrics endpoint.\\nUse values like 30s, 1m, 5m.\\nkube:default=30s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations are tolerations to apply to the Stargate pods.\\nLeave nil to let the controller reuse the same tolerations used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"size\"\n ],\n \"type\": \"object\"\n },\n \"stopped\": {\n \"default\": false,\n \"description\": \"Stopped means that the datacenter will be stopped. Use this for maintenance or for cost saving. A stopped\\nCassandraDatacenter will have no running server pods, like using \\\"stop\\\" with traditional System V init scripts.\\nOther Kubernetes resources will be left intact, and volumes will re-attach when the CassandraDatacenter\\nworkload is resumed.\",\n \"type\": \"boolean\"\n },\n \"storageConfig\": {\n \"description\": \"StorageConfig is the persistent storage requirements for each Cassandra pod. This\\nincludes everything under /var/lib/cassandra, namely the commit log and data\\ndirectories.\",\n \"properties\": {\n \"additionalVolumes\": {\n \"items\": {\n \"description\": \"AdditionalVolumes defines additional storage configurations\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Mount path into cassandra container\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the pvc / volume\",\n \"pattern\": \"[a-z0-9]([-a-z0-9]*[a-z0-9])?\",\n \"type\": \"string\"\n },\n \"pvcSpec\": {\n \"description\": \"PVCSpec is a persistent volume claim spec. Either this or VolumeSource is required.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeSource\": {\n \"description\": \"VolumeSource to mount the volume from (such as ConfigMap / Secret). This or PVCSpec is required.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"cassandraDataVolumeClaimSpec\": {\n \"description\": \"PersistentVolumeClaimSpec describes the common attributes of storage devices\\nand allows a Source for provider-specific attributes\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"telemetry\": {\n \"description\": \"Telemetry defines the desired state for telemetry resources in this datacenter.\\nIf telemetry configurations are defined, telemetry resources will be deployed to integrate with\\na user-provided monitoring solution (at present, only support for Prometheus is available).\",\n \"properties\": {\n \"cassandra\": {\n \"properties\": {\n \"endpoint\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"relabels\": {\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion.\\nIt defines `\\u003cmetric_relabel_configs\\u003e`-section of Prometheus configuration.\\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"mcac\": {\n \"properties\": {\n \"enabled\": {\n \"description\": \"enabled sets whether MCAC (legacy metrics endpoint) is enabled.\\nThis is considered true by default.\",\n \"type\": \"boolean\"\n },\n \"metricFilters\": {\n \"description\": \"MetricFilters allows passing filters to MCAC in order to reduce the amount of extracted metrics.\\nNot setting this field will result in the default filters being used:\\n- \\\"deny:org.apache.cassandra.metrics.Table\\\"\\n- \\\"deny:org.apache.cassandra.metrics.table\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_ss_table_count\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.LiveSSTableCount\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_disk_space_used\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.LiveDiskSpaceUsed\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Pending\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Memtable\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Compaction\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.read\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.write\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.range\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.coordinator\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.dropped_mutations\\\"\\nSetting it to an empty list will result in all metrics being extracted.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"prometheus\": {\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"CommonLabels are applied to all serviceMonitors created.\",\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enable the creation of Prometheus serviceMonitors for this resource (Cassandra or Stargate).\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"vector\": {\n \"properties\": {\n \"components\": {\n \"properties\": {\n \"sinks\": {\n \"description\": \"Sinks is the list of sinks to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the sink.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the sink.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the sink.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sources\": {\n \"description\": \"Sources is the list of sources to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the source.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of the source.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"transforms\": {\n \"description\": \"Transforms is the list of transforms to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the transform.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the transform.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the transform.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enabled enables the Vector agent for this resource (Cassandra, Reaper or Stargate).\\nEnabling the vector agent will inject a sidecar container into the pod.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image is the name of the Vector image to use. If not set, the default image will be used.\\nkube:default=\\\"timberio/vector:0.26.0-alpine\\\"\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resources is the resource requirements for the Vector agent.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrapeInterval\": {\n \"description\": \"ScrapeInterval is the interval at which the Vector agent will scrape the metrics endpoint.\\nUse values like 30s, 1m, 5m.\\nkube:default=30s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations applied to every Cassandra pod.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"size\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"dseWorkloads\": {\n \"properties\": {\n \"analyticsEnabled\": {\n \"type\": \"boolean\"\n },\n \"graphEnabled\": {\n \"type\": \"boolean\"\n },\n \"searchEnabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"extraVolumes\": {\n \"description\": \"Volumes defines additional volumes to be added to each Cassandra pod.\\nIf the volume uses a PersistentVolumeClaim, the PVC will be managed by the statefulset.\",\n \"properties\": {\n \"pvcs\": {\n \"description\": \"PVCs defines additional volumes to be added to each Cassandra pod and managed by the statefulset.\\nSuch volumes are automatically mounted by cass-operator into the cassandra containers.\",\n \"items\": {\n \"description\": \"AdditionalVolumes defines additional storage configurations\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Mount path into cassandra container\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the pvc / volume\",\n \"pattern\": \"[a-z0-9]([-a-z0-9]*[a-z0-9])?\",\n \"type\": \"string\"\n },\n \"pvcSpec\": {\n \"description\": \"PVCSpec is a persistent volume claim spec. Either this or VolumeSource is required.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeSource\": {\n \"description\": \"VolumeSource to mount the volume from (such as ConfigMap / Secret). This or PVCSpec is required.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"description\": \"Volumes defines volumes to be added to each Cassandra pod.\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"name of the volume.\\nMust be a DNS_LABEL and unique within the pod.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"initContainers\": {\n \"description\": \"InitContainers defines init-containers to be deployed in each Cassandra pod.\\nK8ssandra-operator and cass-operator will create their own init-containers, which can be referenced here to control ordering or override specific settings\\nsuch as mounts or resources request/limits for example.\\nOnly the name of the k8ssandra-operator/cass-operator init-containers is required, not their full definition which will be created by the operators.\\nExample:\\n initContainers:\\n - name: server-config-init\\n - name: custom-init-container\\n image: busybox\\n - name: medusa-restore\\nOtherwise init-containers referenced here will be injected in first position\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"jmxInitContainerImage\": {\n \"description\": \"Deprecated: JMX security is now based on CQL roles. We don't need an init container to configure JMX\\nauthentication anymore. The value of this field will be ignored.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"managementApiAuth\": {\n \"description\": \"ManagementApiAuth defines the authentication settings for the management API in the Cassandra pods.\",\n \"properties\": {\n \"insecure\": {\n \"type\": \"object\"\n },\n \"manual\": {\n \"properties\": {\n \"clientSecretName\": {\n \"type\": \"string\"\n },\n \"serverSecretName\": {\n \"type\": \"string\"\n },\n \"skipSecretValidation\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"clientSecretName\",\n \"serverSecretName\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"description\": \"Struct to hold labels and annotations for the top-level Cassandra cluster definition.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"commonAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"annotations that will be applied to all components\\ncreated by the CRD\",\n \"type\": \"object\"\n },\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"labels that will be applied to all components\\ncreated by the CRD\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"pods\": {\n \"description\": \"labels/annotations for the pod components\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"services\": {\n \"description\": \"labels/annotations for all of the CassandraDatacenter service components\",\n \"properties\": {\n \"additionalSeedService\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"allPodsService\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"dcService\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nodePortService\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"seedService\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"mgmtAPIHeap\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"MgmtAPIHeap defines the amount of memory devoted to the management\\napi heap.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"networking\": {\n \"description\": \"Networking enables host networking and configures a NodePort ports.\",\n \"properties\": {\n \"hostNetwork\": {\n \"type\": \"boolean\"\n },\n \"nodePort\": {\n \"properties\": {\n \"internode\": {\n \"type\": \"integer\"\n },\n \"internodeSSL\": {\n \"type\": \"integer\"\n },\n \"native\": {\n \"type\": \"integer\"\n },\n \"nativeSSL\": {\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"perNodeConfigInitContainerImage\": {\n \"default\": \"mikefarah/yq:4\",\n \"description\": \"The image to use in each Cassandra pod for the (short-lived) init container that merges global and perNodeConfig\\nconfiguration. This is only useful when PerNodeConfigMapRef is set.\\nThe default is \\\"mikefarah/yq:4\\\".\",\n \"type\": \"string\"\n },\n \"podSecurityContext\": {\n \"description\": \"PodSecurityContext defines the security context for the Cassandra pods.\",\n \"properties\": {\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"racks\": {\n \"description\": \"Racks is a list of named racks. Note that racks are used to create node affinity. //\",\n \"items\": {\n \"description\": \"Rack ...\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity rules to set for this rack only. Merged with values from PodTemplateSpec Affinity as well as NodeAffinityLabels. If you wish to override all the default\\nPodAntiAffinity rules, set allowMultipleWorkers to true, otherwise defaults are applied and then these Affinity settings are merged.\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The rack name\",\n \"minLength\": 2,\n \"type\": \"string\"\n },\n \"nodeAffinityLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeAffinityLabels to pin the rack, using node affinity\",\n \"type\": \"object\"\n },\n \"zone\": {\n \"description\": \"Deprecated. Use nodeAffinityLabels instead. DeprecatedZone name to pin the rack, using node affinity\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"resources\": {\n \"description\": \"Resources is the cpu and memory resources for the cassandra container.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serverEncryptionStores\": {\n \"description\": \"Internode encryption stores which are used by Cassandra and Stargate.\",\n \"properties\": {\n \"keystorePasswordSecretRef\": {\n \"description\": \"ref to the secret that contains the keystore password if password stored in different secret than keystoreSecretRef\\nif key isn't specified explicitly, \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"keystoreSecretRef\": {\n \"description\": \"ref to the secret that contains the keystore and optionally its password (which can also be specified through\\nthe keystorePasswordSecretRef field)\\nif keys are not specified, \\\"keystore\\\" entry and a \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"truststorePasswordSecretRef\": {\n \"description\": \"ref to the secret that contains the truststore password if password stored in different secret than keystoreSecretRef\\nif key isn't specified explicitly, \\\"truststore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"truststoreSecretRef\": {\n \"description\": \"ref to the secret that contains the truststore and optionally its password (which can also be specified through\\nthe truststorePasswordSecretRef field)\\nif keys are not specified explicitly, \\\"keystore\\\" entry and a \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"keystoreSecretRef\",\n \"truststoreSecretRef\"\n ],\n \"type\": \"object\"\n },\n \"serverImage\": {\n \"description\": \"ServerImage is the image for the cassandra container. Note that this should be a\\nmanagement-api image. If left empty the operator will choose a default image based\\non ServerVersion.\",\n \"type\": \"string\"\n },\n \"serverType\": {\n \"default\": \"cassandra\",\n \"description\": \"Server type: \\\"cassandra\\\" or \\\"dse\\\".\",\n \"enum\": [\n \"cassandra\",\n \"dse\",\n \"hcd\"\n ],\n \"type\": \"string\"\n },\n \"serverVersion\": {\n \"description\": \"ServerVersion is the Cassandra or DSE version. The following versions are supported:\\n- Cassandra: 3.11.X, 4.X.X and 5.X.X\\n- DSE: 6.8.X, 7.x.x\\n- HCD: 1.0.x\",\n \"pattern\": \"(\\\\d+\\\\.\\\\d+\\\\.\\\\d+)\",\n \"type\": \"string\"\n },\n \"serviceAccount\": {\n \"description\": \"The k8s service account to use for the Cassandra pods\",\n \"type\": \"string\"\n },\n \"softPodAntiAffinity\": {\n \"description\": \"SoftPodAntiAffinity sets whether multiple Cassandra instances can be scheduled on the same node.\\nThis should normally be false to ensure cluster resilience but may be set true for test/dev scenarios to minimise\\nthe number of nodes required.\",\n \"type\": \"boolean\"\n },\n \"storageConfig\": {\n \"description\": \"StorageConfig is the persistent storage requirements for each Cassandra pod. This\\nincludes everything under /var/lib/cassandra, namely the commit log and data\\ndirectories.\",\n \"properties\": {\n \"additionalVolumes\": {\n \"items\": {\n \"description\": \"AdditionalVolumes defines additional storage configurations\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Mount path into cassandra container\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the pvc / volume\",\n \"pattern\": \"[a-z0-9]([-a-z0-9]*[a-z0-9])?\",\n \"type\": \"string\"\n },\n \"pvcSpec\": {\n \"description\": \"PVCSpec is a persistent volume claim spec. Either this or VolumeSource is required.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeSource\": {\n \"description\": \"VolumeSource to mount the volume from (such as ConfigMap / Secret). This or PVCSpec is required.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"cassandraDataVolumeClaimSpec\": {\n \"description\": \"PersistentVolumeClaimSpec describes the common attributes of storage devices\\nand allows a Source for provider-specific attributes\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"superuserSecretRef\": {\n \"description\": \"The reference to the superuser secret to use for Cassandra. If unspecified, a default secret will be generated\\nwith a random password; the generated secret name will be \\\"\\u003ccluster_name\\u003e-superuser\\\" where \\u003ccluster_name\\u003e is the\\nK8ssandraCluster CRD name.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"telemetry\": {\n \"description\": \"Telemetry defines the desired state for telemetry resources in this datacenter.\\nIf telemetry configurations are defined, telemetry resources will be deployed to integrate with\\na user-provided monitoring solution (at present, only support for Prometheus is available).\",\n \"properties\": {\n \"cassandra\": {\n \"properties\": {\n \"endpoint\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"relabels\": {\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion.\\nIt defines `\\u003cmetric_relabel_configs\\u003e`-section of Prometheus configuration.\\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"mcac\": {\n \"properties\": {\n \"enabled\": {\n \"description\": \"enabled sets whether MCAC (legacy metrics endpoint) is enabled.\\nThis is considered true by default.\",\n \"type\": \"boolean\"\n },\n \"metricFilters\": {\n \"description\": \"MetricFilters allows passing filters to MCAC in order to reduce the amount of extracted metrics.\\nNot setting this field will result in the default filters being used:\\n- \\\"deny:org.apache.cassandra.metrics.Table\\\"\\n- \\\"deny:org.apache.cassandra.metrics.table\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_ss_table_count\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.LiveSSTableCount\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_disk_space_used\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.LiveDiskSpaceUsed\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Pending\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Memtable\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Compaction\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.read\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.write\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.range\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.coordinator\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.dropped_mutations\\\"\\nSetting it to an empty list will result in all metrics being extracted.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"prometheus\": {\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"CommonLabels are applied to all serviceMonitors created.\",\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enable the creation of Prometheus serviceMonitors for this resource (Cassandra or Stargate).\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"vector\": {\n \"properties\": {\n \"components\": {\n \"properties\": {\n \"sinks\": {\n \"description\": \"Sinks is the list of sinks to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the sink.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the sink.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the sink.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sources\": {\n \"description\": \"Sources is the list of sources to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the source.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of the source.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"transforms\": {\n \"description\": \"Transforms is the list of transforms to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the transform.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the transform.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the transform.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enabled enables the Vector agent for this resource (Cassandra, Reaper or Stargate).\\nEnabling the vector agent will inject a sidecar container into the pod.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image is the name of the Vector image to use. If not set, the default image will be used.\\nkube:default=\\\"timberio/vector:0.26.0-alpine\\\"\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resources is the resource requirements for the Vector agent.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrapeInterval\": {\n \"description\": \"ScrapeInterval is the interval at which the Vector agent will scrape the metrics endpoint.\\nUse values like 30s, 1m, 5m.\\nkube:default=30s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations applied to every Cassandra pod.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"externalDatacenters\": {\n \"description\": \"During a migration the operator should alter keyspaces replication settings including the following external DCs.\\nThis avoids removing replicas from datacenters which are outside of the operator scope (not referenced in the CR).\\nReplication settings changes will only apply to system_* keyspaces as well as reaper_db and data_endpoint_auth (Stargate).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"medusa\": {\n \"description\": \"Medusa defines the desired deployment characteristics for Medusa in this K8ssandraCluster.\\nIf this is non-nil, Medusa will be deployed in every Cassandra pod in this K8ssandraCluster.\",\n \"properties\": {\n \"cassandraUserSecretRef\": {\n \"description\": \"Defines the username and password that Medusa will use to authenticate CQL connections to Cassandra clusters.\\nThese credentials will be automatically turned into CQL roles by cass-operator when bootstrapping the datacenter,\\nthen passed to the Medusa instances, so that it can authenticate against nodes in the datacenter using CQL.\\nThe secret must be in the same namespace as Cassandra and must contain two keys: \\\"username\\\" and \\\"password\\\".\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"certificatesSecretRef\": {\n \"description\": \"Certificates for Medusa if client encryption is enabled in Cassandra.\\nThe secret must be in the same namespace as Cassandra and must contain three keys: \\\"rootca.crt\\\", \\\"client.crt_signed\\\" and \\\"client.key\\\".\\nSee https://docs.datastax.com/en/developer/python-driver/latest/security/ for more information on the required files.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"containerImage\": {\n \"description\": \"MedusaContainerImage is the image characteristics to use for Medusa containers. Leave nil\\nto use a default image.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"containerResources\": {\n \"description\": \"Medusa main container resources.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"initContainerResources\": {\n \"description\": \"medusa-restore init container resources.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Define the liveness probe settings to use for the Medusa containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"medusaConfigurationRef\": {\n \"description\": \"MedusaConfigurationRef points to an existing MedusaConfiguration object.\\nThe purpose is to allow shared default settings across several clusters.\\nStorageProperties override the settings from MedusaConfiguration object to allow customization.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"API version of the referent.\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"If referring to a piece of an object instead of an entire object, this string\\nshould contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\\nFor example, if the object reference is to a container within a pod, this would take on a value like:\\n\\\"spec.containers{name}\\\" (where \\\"name\\\" refers to the name of the container that triggered\\nthe event) or if no container name is specified \\\"spec.containers[2]\\\" (container with\\nindex 2 in this pod). This syntax is chosen only to have some well-defined way of\\nreferencing a part of an object.\\nTODO: this design is not final and this field is subject to change in the future.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind of the referent.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/\",\n \"type\": \"string\"\n },\n \"resourceVersion\": {\n \"description\": \"Specific resourceVersion to which this reference is made, if any.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency\",\n \"type\": \"string\"\n },\n \"uid\": {\n \"description\": \"UID of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"purgeBackups\": {\n \"default\": true,\n \"description\": \"PurgeBackups toggles if the medusa backups should be purged nightly or not\\nDefaults to true.\",\n \"type\": \"boolean\"\n },\n \"readinessProbe\": {\n \"description\": \"Define the readiness probe settings to use for the Medusa containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext applied to the Medusa containers.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"storageProperties\": {\n \"description\": \"Provides all storage backend related properties for backups.\",\n \"properties\": {\n \"apiProfile\": {\n \"description\": \"AWS Profile to use for authentication.\",\n \"type\": \"string\"\n },\n \"backupGracePeriodInDays\": {\n \"description\": \"Age after which orphan sstables can be deleted from the storage backend.\\nProtects from race conditions between purge and ongoing backups.\\nDefaults to 10 days.\",\n \"type\": \"integer\"\n },\n \"bucketName\": {\n \"description\": \"The name of the bucket to use for the backups.\",\n \"type\": \"string\"\n },\n \"concurrentTransfers\": {\n \"default\": 0,\n \"description\": \"Number of concurrent uploads.\\nHelps maximizing the speed of uploads but puts more pressure on the network.\\nDefaults to 0.\",\n \"type\": \"integer\"\n },\n \"credentialsType\": {\n \"description\": \"Type of credentials to use for authentication.\\nCan be \\\"role-based\\\", \\\"credential-based\\\" or empty.\",\n \"enum\": [\n \"role-based\",\n \"credential-based\"\n ],\n \"type\": \"string\"\n },\n \"host\": {\n \"description\": \"Host to connect to for the storage backend.\",\n \"type\": \"string\"\n },\n \"maxBackupAge\": {\n \"default\": 0,\n \"description\": \"Maximum backup age that the purge process should observe.\",\n \"type\": \"integer\"\n },\n \"maxBackupCount\": {\n \"default\": 0,\n \"description\": \"Maximum number of backups to keep (used by the purge process).\\nDefault is unlimited.\",\n \"type\": \"integer\"\n },\n \"multiPartUploadThreshold\": {\n \"default\": 104857600,\n \"description\": \"File size over which cloud specific cli tools are used for transfer.\\nDefaults to 100 MB.\",\n \"type\": \"integer\"\n },\n \"podStorage\": {\n \"description\": \"Pod storage settings for the local storage provider\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"Pod local storage access modes\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"default\": \"10Gi\",\n \"description\": \"Size of the pod's storage in bytes.\\nDefaults to 10 GB.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"storageClassName\": {\n \"description\": \"Storage class name to use for the pod's storage.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"port\": {\n \"description\": \"Port to connect to for the storage backend.\",\n \"type\": \"integer\"\n },\n \"prefix\": {\n \"description\": \"Name of the top level folder in the backup bucket.\\nIf empty, the cluster name will be used.\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"Region of the storage bucket.\\nDefaults to \\\"default\\\".\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Whether to use SSL for the storage backend.\",\n \"type\": \"boolean\"\n },\n \"sslVerify\": {\n \"description\": \"When using SSL, whether to also verify the certificate.\",\n \"type\": \"boolean\"\n },\n \"storageProvider\": {\n \"description\": \"The storage backend to use for the backups.\",\n \"enum\": [\n \"google_storage\",\n \"azure_blobs\",\n \"s3\",\n \"s3_compatible\",\n \"s3_rgw\",\n \"ibm_storage\"\n ],\n \"type\": \"string\"\n },\n \"storageSecretRef\": {\n \"description\": \"Kubernetes Secret that stores the key file for the storage provider's API.\\nIf using 'local' storage, this value is ignored.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"transferMaxBandwidth\": {\n \"default\": \"50MB/s\",\n \"description\": \"Max upload bandwidth in MB/s.\\nDefaults to 50 MB/s.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"reaper\": {\n \"description\": \"Reaper defines the desired deployment characteristics for Reaper in this K8ssandraCluster.\\nIf this is non-nil, Reaper might be deployed on every Cassandra datacenter in this K8ssandraCluster, unless\\nthere is a Control Plane Reaper present. In that case, the K8ssandraCluster will get registered to it.\",\n \"properties\": {\n \"ServiceAccountName\": {\n \"default\": \"default\",\n \"type\": \"string\"\n },\n \"affinity\": {\n \"description\": \"Affinity applied to the Reaper pods.\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"autoScheduling\": {\n \"description\": \"Auto scheduling properties. When you enable the auto-schedule feature, Reaper dynamically schedules repairs for\\nall non-system keyspaces in a cluster. A cluster's keyspaces are monitored and any modifications (additions or\\nremovals) are detected. When a new keyspace is created, a new repair schedule is created automatically for that\\nkeyspace. Conversely, when a keyspace is removed, the corresponding repair schedule is deleted.\",\n \"properties\": {\n \"enabled\": {\n \"default\": false,\n \"type\": \"boolean\"\n },\n \"excludedClusters\": {\n \"description\": \"ExcludedClusters are the clusters that are to be excluded from the repair schedule.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"excludedKeyspaces\": {\n \"description\": \"ExcludedKeyspaces are the keyspaces that are to be excluded from the repair schedule.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"initialDelayPeriod\": {\n \"default\": \"PT15S\",\n \"description\": \"InitialDelay is the amount of delay time before the schedule period starts. Must be a valid ISO-8601 duration\\nstring. The default is \\\"PT15S\\\" (15 seconds).\",\n \"pattern\": \"([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?\",\n \"type\": \"string\"\n },\n \"percentUnrepairedThreshold\": {\n \"default\": 10,\n \"description\": \"PercentUnrepairedThreshold is the percentage of unrepaired data over which an incremental repair should be\\nstarted. Only relevant when using repair type INCREMENTAL.\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"periodBetweenPolls\": {\n \"default\": \"PT10M\",\n \"description\": \"PeriodBetweenPolls is the interval time to wait before checking whether to start a repair task. Must be a valid\\nISO-8601 duration string. The default is \\\"PT10M\\\" (10 minutes).\",\n \"pattern\": \"([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?\",\n \"type\": \"string\"\n },\n \"repairType\": {\n \"default\": \"AUTO\",\n \"description\": \"RepairType is the type of repair to create:\\n- REGULAR creates a regular repair (non-adaptive and non-incremental);\\n- ADAPTIVE creates an adaptive repair; adaptive repairs are most suited for Cassandra 3.\\n- INCREMENTAL creates an incremental repair; incremental repairs should only be used with Cassandra 4+.\\n- AUTO chooses between ADAPTIVE and INCREMENTAL depending on the Cassandra server version; ADAPTIVE for Cassandra\\n3 and INCREMENTAL for Cassandra 4+.\",\n \"enum\": [\n \"REGULAR\",\n \"ADAPTIVE\",\n \"INCREMENTAL\",\n \"AUTO\"\n ],\n \"type\": \"string\"\n },\n \"scheduleSpreadPeriod\": {\n \"default\": \"PT6H\",\n \"description\": \"ScheduleSpreadPeriod is the time spacing between each of the repair schedules that is to be carried out. Must be\\na valid ISO-8601 duration string. The default is \\\"PT6H\\\" (6 hours).\",\n \"pattern\": \"([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?\",\n \"type\": \"string\"\n },\n \"timeBeforeFirstSchedule\": {\n \"default\": \"PT5M\",\n \"description\": \"TimeBeforeFirstSchedule is the grace period before the first repair in the schedule is started. Must be a valid\\nISO-8601 duration string. The default is \\\"PT5M\\\" (5 minutes).\",\n \"pattern\": \"([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"cassandraUserSecretRef\": {\n \"description\": \"Defines the username and password that Reaper will use to authenticate CQL connections to Cassandra clusters.\\nThese credentials will be automatically turned into CQL roles by cass-operator when bootstrapping the datacenter,\\nthen passed to the Reaper instance, so that it can authenticate against nodes in the datacenter using CQL. If CQL\\nauthentication is not required, leave this field empty. The secret must be in the same namespace as Reaper itself\\nand must contain two keys: \\\"username\\\" and \\\"password\\\".\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"containerImage\": {\n \"default\": {\n \"name\": \"cassandra-reaper\",\n \"repository\": \"thelastpickle\",\n \"tag\": \"3.6.1\"\n },\n \"description\": \"The image to use for the Reaper pod main container.\\nThe default is \\\"thelastpickle/cassandra-reaper:3.6.1\\\".\\nTODO: update with real release version.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"deploymentMode\": {\n \"default\": \"PER_DC\",\n \"enum\": [\n \"PER_DC\",\n \"SINGLE\",\n \"CONTROL_PLANE\"\n ],\n \"type\": \"string\"\n },\n \"heapSize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"default\": \"2Gi\",\n \"description\": \"HeapSize sets the JVM heap size to use for Reaper.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"httpManagement\": {\n \"default\": {\n \"enabled\": false\n },\n \"properties\": {\n \"enabled\": {\n \"default\": false,\n \"description\": \"Enable/disable the HTTP management connection between Reaper and Cassandra.\\nWhen enabled, HTTP will be used instead of JMX for management connectivity between Cassandra\\nand Reaper. In future, this will be true by default\",\n \"type\": \"boolean\"\n },\n \"keystores\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"initContainerImage\": {\n \"description\": \"Deprecated: The main container image will be used for the init container as well.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"initContainerResources\": {\n \"description\": \"Init Container resources.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"initContainerSecurityContext\": {\n \"description\": \"InitContainerSecurityContext is the SecurityContext applied to the Reaper init container, used to perform schema\\nmigrations.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"jmxUserSecretRef\": {\n \"description\": \"Deprecated: JMX security is now based on CQL roles. Reaper will use cassandraUsefSecretRef for authentication,\\nthis field is ignored.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"keyspace\": {\n \"default\": \"reaper_db\",\n \"description\": \"The keyspace to use to store Reaper's state. Will default to \\\"reaper_db\\\" if unspecified. Will be created if it\\ndoes not exist, and if this Reaper resource is managed by K8ssandra.\",\n \"type\": \"string\"\n },\n \"livenessProbe\": {\n \"description\": \"LivenessProbe sets the Reaper liveness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"description\": \"labels and annotations for Reaper resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"labels/annotations that will be applied to all components\\ncreated by the CRD\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"pods\": {\n \"description\": \"labels/annotations for the pod components\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"description\": \"labels/annotations for the service component\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"podSecurityContext\": {\n \"description\": \"PodSecurityContext contains a pod-level SecurityContext to apply to Reaper pods.\",\n \"properties\": {\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"readinessProbe\": {\n \"description\": \"ReadinessProbe sets the Reaper readiness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"reaperRef\": {\n \"description\": \"When there is a CONTROL_PLANE Reaper out there, this field allows registering a K8ssandra cluster to it.\\nPopulating this field disables some operator behaviour related to setting Reaper up.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"API version of the referent.\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"If referring to a piece of an object instead of an entire object, this string\\nshould contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\\nFor example, if the object reference is to a container within a pod, this would take on a value like:\\n\\\"spec.containers{name}\\\" (where \\\"name\\\" refers to the name of the container that triggered\\nthe event) or if no container name is specified \\\"spec.containers[2]\\\" (container with\\nindex 2 in this pod). This syntax is chosen only to have some well-defined way of\\nreferencing a part of an object.\\nTODO: this design is not final and this field is subject to change in the future.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind of the referent.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/\",\n \"type\": \"string\"\n },\n \"resourceVersion\": {\n \"description\": \"Specific resourceVersion to which this reference is made, if any.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency\",\n \"type\": \"string\"\n },\n \"uid\": {\n \"description\": \"UID of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Main Container resources.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"secretsProvider\": {\n \"default\": \"internal\",\n \"description\": \"SecretsProvider defines whether the secrets used for credentials and certs will be backed\\nby an external secret backend. This moves the responsibility of generating and storing\\nsecrets from the operators to the user and will rely on a mutating webhook to inject\\nthe secrets into the necessary resources\",\n \"enum\": [\n \"internal\",\n \"external\"\n ],\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext applied to the Reaper main container.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"storageConfig\": {\n \"description\": \"If StorageType is \\\"local\\\", Reaper will need a Persistent Volume to persist its data. This field allows\\nconfiguring that Persistent Volume.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageType\": {\n \"default\": \"cassandra\",\n \"description\": \"The storage backend to store Reaper's data. Defaults to \\\"cassandra\\\" which causes Reaper to be stateless and store\\nits state to a Cassandra cluster it repairs (implying there must be one Reaper for each Cassandra cluster).\\nThe \\\"local\\\" option makes Reaper to store its state locally, allowing a single Reaper to repair several clusters.\",\n \"enum\": [\n \"cassandra\",\n \"local\"\n ],\n \"type\": \"string\"\n },\n \"telemetry\": {\n \"description\": \"Telemetry defines the desired telemetry integrations to deploy targeting the Reaper pods for all DCs in this cluster\\n(unless overridden by DC specific settings)\",\n \"properties\": {\n \"cassandra\": {\n \"properties\": {\n \"endpoint\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"relabels\": {\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion.\\nIt defines `\\u003cmetric_relabel_configs\\u003e`-section of Prometheus configuration.\\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"mcac\": {\n \"properties\": {\n \"enabled\": {\n \"description\": \"enabled sets whether MCAC (legacy metrics endpoint) is enabled.\\nThis is considered true by default.\",\n \"type\": \"boolean\"\n },\n \"metricFilters\": {\n \"description\": \"MetricFilters allows passing filters to MCAC in order to reduce the amount of extracted metrics.\\nNot setting this field will result in the default filters being used:\\n- \\\"deny:org.apache.cassandra.metrics.Table\\\"\\n- \\\"deny:org.apache.cassandra.metrics.table\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_ss_table_count\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.LiveSSTableCount\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_disk_space_used\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.LiveDiskSpaceUsed\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Pending\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Memtable\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Compaction\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.read\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.write\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.range\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.coordinator\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.dropped_mutations\\\"\\nSetting it to an empty list will result in all metrics being extracted.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"prometheus\": {\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"CommonLabels are applied to all serviceMonitors created.\",\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enable the creation of Prometheus serviceMonitors for this resource (Cassandra or Stargate).\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"vector\": {\n \"properties\": {\n \"components\": {\n \"properties\": {\n \"sinks\": {\n \"description\": \"Sinks is the list of sinks to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the sink.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the sink.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the sink.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sources\": {\n \"description\": \"Sources is the list of sources to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the source.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of the source.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"transforms\": {\n \"description\": \"Transforms is the list of transforms to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the transform.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the transform.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the transform.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enabled enables the Vector agent for this resource (Cassandra, Reaper or Stargate).\\nEnabling the vector agent will inject a sidecar container into the pod.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image is the name of the Vector image to use. If not set, the default image will be used.\\nkube:default=\\\"timberio/vector:0.26.0-alpine\\\"\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resources is the resource requirements for the Vector agent.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrapeInterval\": {\n \"description\": \"ScrapeInterval is the interval at which the Vector agent will scrape the metrics endpoint.\\nUse values like 30s, 1m, 5m.\\nkube:default=30s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations applied to the Reaper pods.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"uiUserSecretRef\": {\n \"description\": \"Defines the secret which contains the username and password for the Reaper UI and REST API authentication. When UiUserSecretRef.Name == \\\"\\\", authentication is turned off in the front-end only.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secretsProvider\": {\n \"default\": \"internal\",\n \"description\": \"SecretsProvider defines whether the secrets used for credentials and certs will be backed\\nby an external secret backend (e.g. vault). This moves the responsibility of generating and\\nstoring secrets from the operators to the user and will rely on a mutating webhook to inject\\nthe secrets into the necessary resources\",\n \"enum\": [\n \"internal\",\n \"external\"\n ],\n \"type\": \"string\"\n },\n \"stargate\": {\n \"description\": \"Stargate defines the desired deployment characteristics for Stargate in this K8ssandraCluster.\\nIf this is non-nil, Stargate will be deployed on every Cassandra datacenter in this K8ssandraCluster.\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity is the affinity to apply to all the Stargate pods.\\nLeave nil to let the controller reuse the same affinity rules used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"allowStargateOnDataNodes\": {\n \"default\": false,\n \"description\": \"AllowStargateOnDataNodes allows Stargate pods to be scheduled on a worker node already hosting data pods for this\\ndatacenter. The default is false, which means that Stargate pods will be scheduled on separate worker nodes.\\nNote: if the datacenter pods have HostNetwork:true, then the Stargate pods will inherit of it, in which case it\\nis possible that Stargate nodes won't be allowed to sit on data nodes even if this property is set to true,\\nbecause of port conflicts on the same IP address.\",\n \"type\": \"boolean\"\n },\n \"authOptions\": {\n \"description\": \"Authentication options.\",\n \"properties\": {\n \"apiAuthMethod\": {\n \"default\": \"Table\",\n \"description\": \"The method to use for authenticating requests to the Stargate APIs. Stargate currently has\\ntwo authentication / authorization methods:\\n- Table: table-based;\\n- JWT: JSON web token (JWT)-based.\\nThe methods are mutually exclusive. The default method is Table.\",\n \"enum\": [\n \"Table\",\n \"JWT\"\n ],\n \"type\": \"string\"\n },\n \"providerUrl\": {\n \"description\": \"Required when using JWT authentication method, ignored otherwise.\",\n \"type\": \"string\"\n },\n \"tokenTtlSeconds\": {\n \"description\": \"The time-to-live in seconds of an API authentication token. Valid only for the Table\\nauthentication method. By default, the token persists for 30 minutes with a sliding window.\\nEach use of the token to authenticate resets the 30-minute window. A token created and used\\nafter 29 minutes will authenticate a request, but if 31 minutes passes before use, the token\\nwill no longer exist.\\nDefault is 1800 seconds (30 minutes).\",\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"cassandraConfigMapRef\": {\n \"description\": \"CassandraConfigMapRef is a reference to a ConfigMap that holds Cassandra configuration.\\nThe map should have a key named cassandra_yaml.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"containerImage\": {\n \"default\": {\n \"repository\": \"stargateio\",\n \"tag\": \"v1.0.77\"\n },\n \"description\": \"ContainerImage is the image characteristics to use for Stargate containers. Leave nil\\nto use a default image.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"heapSize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"default\": \"256Mi\",\n \"description\": \"HeapSize sets the JVM heap size to use for Stargate. If no Resources are specified, this\\nvalue will also be used to set a default memory request and limit for the Stargate pods:\\nthese will be set to HeapSize x2 and x4, respectively.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"livenessProbe\": {\n \"description\": \"LivenessProbe sets the Stargate liveness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"description\": \"labels and annotations for Stargate resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"labels/annotations that will be applied to all components\\ncreated by the CRD\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"pods\": {\n \"description\": \"labels/annotations for the pod components\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"description\": \"labels/annotations for the service component\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is an optional map of label keys and values to restrict the scheduling of Stargate nodes to workers\\nwith matching labels.\\nLeave nil to let the controller reuse the same node selectors used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector\",\n \"type\": \"object\"\n },\n \"readinessProbe\": {\n \"description\": \"ReadinessProbe sets the Stargate readiness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Resources is the Kubernetes resource requests and limits to apply, per Stargate pod. Leave\\nnil to use defaults.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"secretsProvider\": {\n \"default\": \"internal\",\n \"description\": \"SecretsProvider defines whether the secrets used for credentials and certs will be backed\\nby an external secret backend. This moves the responsibility of generating and storing\\nsecrets from the operators to the user and will rely on a mutating webhook to inject\\nthe secrets into the necessary resources\",\n \"enum\": [\n \"internal\",\n \"external\"\n ],\n \"type\": \"string\"\n },\n \"serviceAccount\": {\n \"default\": \"default\",\n \"description\": \"ServiceAccount is the service account name to use for Stargate pods.\",\n \"type\": \"string\"\n },\n \"size\": {\n \"default\": 1,\n \"description\": \"Size is the number of Stargate instances to deploy in each datacenter. They will be spread evenly across racks.\",\n \"format\": \"int32\",\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"telemetry\": {\n \"description\": \"Telemetry defines the desired telemetry integrations to deploy targeting the Stargate pods for all DCs in this cluster\\n(unless overridden by DC specific settings)\",\n \"properties\": {\n \"cassandra\": {\n \"properties\": {\n \"endpoint\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"relabels\": {\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion.\\nIt defines `\\u003cmetric_relabel_configs\\u003e`-section of Prometheus configuration.\\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"mcac\": {\n \"properties\": {\n \"enabled\": {\n \"description\": \"enabled sets whether MCAC (legacy metrics endpoint) is enabled.\\nThis is considered true by default.\",\n \"type\": \"boolean\"\n },\n \"metricFilters\": {\n \"description\": \"MetricFilters allows passing filters to MCAC in order to reduce the amount of extracted metrics.\\nNot setting this field will result in the default filters being used:\\n- \\\"deny:org.apache.cassandra.metrics.Table\\\"\\n- \\\"deny:org.apache.cassandra.metrics.table\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_ss_table_count\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.LiveSSTableCount\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_disk_space_used\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.LiveDiskSpaceUsed\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Pending\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Memtable\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Compaction\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.read\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.write\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.range\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.coordinator\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.dropped_mutations\\\"\\nSetting it to an empty list will result in all metrics being extracted.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"prometheus\": {\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"CommonLabels are applied to all serviceMonitors created.\",\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enable the creation of Prometheus serviceMonitors for this resource (Cassandra or Stargate).\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"vector\": {\n \"properties\": {\n \"components\": {\n \"properties\": {\n \"sinks\": {\n \"description\": \"Sinks is the list of sinks to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the sink.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the sink.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the sink.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sources\": {\n \"description\": \"Sources is the list of sources to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the source.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of the source.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"transforms\": {\n \"description\": \"Transforms is the list of transforms to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the transform.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the transform.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the transform.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enabled enables the Vector agent for this resource (Cassandra, Reaper or Stargate).\\nEnabling the vector agent will inject a sidecar container into the pod.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image is the name of the Vector image to use. If not set, the default image will be used.\\nkube:default=\\\"timberio/vector:0.26.0-alpine\\\"\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resources is the resource requirements for the Vector agent.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrapeInterval\": {\n \"description\": \"ScrapeInterval is the interval at which the Vector agent will scrape the metrics endpoint.\\nUse values like 30s, 1m, 5m.\\nkube:default=30s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations are tolerations to apply to the Stargate pods.\\nLeave nil to let the controller reuse the same tolerations used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"size\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"K8ssandra Cluster\",\n \"type\": \"object\"\n}", + "version": "k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "K8ssandra Cluster", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003emeshery-logo-light\u003c/title\u003e\u003cpolygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/\u003e\u003cpolygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/\u003e\u003cpolygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/\u003e\u003cpath d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/\u003e\u003cpath d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/\u003e\u003cpolygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/\u003e\u003cpolygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/\u003e\u003cpath d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/\u003e\u003cpath d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/\u003e\u003cpolygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/K8ssandraTask.json b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/K8ssandraTask.json new file mode 100644 index 00000000000..4f2ee4db2f4 --- /dev/null +++ b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/K8ssandraTask.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "K8ssandraTask", + "schema": "{\n \"description\": \"K8ssandraTask is the Schema for the k8ssandratasks API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"K8ssandraTaskSpec defines the desired state of K8ssandraTask\",\n \"properties\": {\n \"cluster\": {\n \"description\": \"Which K8ssandraCluster this task is operating on.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"API version of the referent.\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"If referring to a piece of an object instead of an entire object, this string\\nshould contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\\nFor example, if the object reference is to a container within a pod, this would take on a value like:\\n\\\"spec.containers{name}\\\" (where \\\"name\\\" refers to the name of the container that triggered\\nthe event) or if no container name is specified \\\"spec.containers[2]\\\" (container with\\nindex 2 in this pod). This syntax is chosen only to have some well-defined way of\\nreferencing a part of an object.\\nTODO: this design is not final and this field is subject to change in the future.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind of the referent.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/\",\n \"type\": \"string\"\n },\n \"resourceVersion\": {\n \"description\": \"Specific resourceVersion to which this reference is made, if any.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency\",\n \"type\": \"string\"\n },\n \"uid\": {\n \"description\": \"UID of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"datacenters\": {\n \"description\": \"The names of the targeted datacenters. If omitted, will default to all DCs in spec order.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dcConcurrencyPolicy\": {\n \"description\": \"How to handle concurrency across DCs. Valid values are:\\n- \\\"Forbid\\\" (default): sequential processing. The K8ssandraTask only spawns one CassandraTask at a time, which\\n must run to completion before the CassandraTask for the next DC is created. If any CassandraTask fails, the\\n K8ssandraTask is marked as failed, and the remaining CassandraTasks are cancelled (i.e. never created).\\n- \\\"Allow\\\": parallel processing. The K8ssandraTask spawns all CassandraTasks at once. If any CassandraTask fails,\\n the K8ssandraTask is marked as failed, but the remaining CassandraTasks finish running.\",\n \"type\": \"string\"\n },\n \"template\": {\n \"description\": \"The characteristics of the CassandraTask that will get created for each DC.\",\n \"properties\": {\n \"concurrencyPolicy\": {\n \"description\": \"Specifics if this task can be run concurrently with other active tasks. Valid values are:\\n- \\\"Allow\\\": allows multiple Tasks to run concurrently on Cassandra cluster\\n- \\\"Forbid\\\" (default): only a single task is executed at once\\nThe \\\"Allow\\\" property is only valid if all the other active Tasks have \\\"Allow\\\" as well.\",\n \"type\": \"string\"\n },\n \"jobs\": {\n \"description\": \"Jobs defines the jobs this task will execute (and their order)\",\n \"items\": {\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments are additional parameters for the command\",\n \"properties\": {\n \"end_token\": {\n \"type\": \"string\"\n },\n \"jobs\": {\n \"type\": \"integer\"\n },\n \"keyspace_name\": {\n \"type\": \"string\"\n },\n \"new_tokens\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NewTokens is a map of pod names to their newly-assigned tokens. Required for the move\\ncommand, ignored otherwise. Pods referenced in this map must exist; any existing pod not\\nreferenced in this map will not be moved.\",\n \"type\": \"object\"\n },\n \"no_snapshot\": {\n \"type\": \"boolean\"\n },\n \"no_validate\": {\n \"description\": \"Scrub arguments\",\n \"type\": \"boolean\"\n },\n \"pod_name\": {\n \"type\": \"string\"\n },\n \"rack\": {\n \"type\": \"string\"\n },\n \"skip_corrupted\": {\n \"type\": \"boolean\"\n },\n \"source_datacenter\": {\n \"type\": \"string\"\n },\n \"split_output\": {\n \"description\": \"Compaction arguments\",\n \"type\": \"boolean\"\n },\n \"start_token\": {\n \"type\": \"string\"\n },\n \"tables\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"command\": {\n \"description\": \"Command defines what is run against Cassandra pods\",\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"command\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy indicates the behavior n case of failure. Default is Never.\",\n \"type\": \"string\"\n },\n \"scheduledTime\": {\n \"description\": \"ScheduledTime indicates the earliest possible time this task is executed. This does not necessarily\\nequal to the time it is actually executed (if other tasks are blocking for example). If not set,\\nthe task will be executed immediately.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"ttlSecondsAfterFinished\": {\n \"description\": \"TTLSecondsAfterFinished defines how long the completed job will kept before being cleaned up. If set to 0\\nthe task will not be cleaned up by the cass-operator. If unset, the default time (86400s) is used.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"K8ssandra Task\",\n \"type\": \"object\"\n}", + "version": "control.k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "K8ssandra Task", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003emeshery-logo-light\u003c/title\u003e\u003cpolygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/\u003e\u003cpolygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/\u003e\u003cpolygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/\u003e\u003cpath d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/\u003e\u003cpath d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/\u003e\u003cpolygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/\u003e\u003cpolygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/\u003e\u003cpath d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/\u003e\u003cpath d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/\u003e\u003cpolygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackup.json b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackup.json new file mode 100644 index 00000000000..f324f78f80c --- /dev/null +++ b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackup.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "MedusaBackup", + "schema": "{\n \"description\": \"MedusaBackup is the Schema for the medusabackups API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"MedusaBackupSpec defines the desired state of MedusaBackup\",\n \"properties\": {\n \"backupType\": {\n \"default\": \"differential\",\n \"description\": \"The type of the backup: \\\"full\\\" or \\\"differential\\\"\",\n \"enum\": [\n \"differential\",\n \"full\"\n ],\n \"type\": \"string\"\n },\n \"cassandraDatacenter\": {\n \"description\": \"The name of the CassandraDatacenter to back up\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"cassandraDatacenter\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Medusa Backup\",\n \"type\": \"object\"\n}", + "version": "medusa.k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Medusa Backup", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003emeshery-logo-light\u003c/title\u003e\u003cpolygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/\u003e\u003cpolygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/\u003e\u003cpolygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/\u003e\u003cpath d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/\u003e\u003cpath d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/\u003e\u003cpolygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/\u003e\u003cpolygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/\u003e\u003cpath d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/\u003e\u003cpath d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/\u003e\u003cpolygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackupJob.json b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackupJob.json new file mode 100644 index 00000000000..dfc6b75267f --- /dev/null +++ b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackupJob.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "MedusaBackupJob", + "schema": "{\n \"description\": \"MedusaBackupJob is the Schema for the medusabackupjobs API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"MedusaBackupJobSpec defines the desired state of MedusaBackupJob\",\n \"properties\": {\n \"backupType\": {\n \"default\": \"differential\",\n \"description\": \"The type of the backup: \\\"full\\\" or \\\"differential\\\"\",\n \"enum\": [\n \"differential\",\n \"full\"\n ],\n \"type\": \"string\"\n },\n \"cassandraDatacenter\": {\n \"description\": \"The name of the CassandraDatacenter to back up\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"cassandraDatacenter\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Medusa Backup Job\",\n \"type\": \"object\"\n}", + "version": "medusa.k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Medusa Backup Job", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003emeshery-logo-light\u003c/title\u003e\u003cpolygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/\u003e\u003cpolygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/\u003e\u003cpolygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/\u003e\u003cpath d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/\u003e\u003cpath d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/\u003e\u003cpolygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/\u003e\u003cpolygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/\u003e\u003cpath d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/\u003e\u003cpath d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/\u003e\u003cpolygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackupSchedule.json b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackupSchedule.json new file mode 100644 index 00000000000..e6869ba20d1 --- /dev/null +++ b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackupSchedule.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "MedusaBackupSchedule", + "schema": "{\n \"description\": \"MedusaBackupSchedule is the Schema for the medusabackupschedules API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"MedusaBackupScheduleSpec defines the desired state of MedusaBackupSchedule\",\n \"properties\": {\n \"backupSpec\": {\n \"description\": \"BackupSpec defines the MedusaBackup to be created for this job\",\n \"properties\": {\n \"backupType\": {\n \"default\": \"differential\",\n \"description\": \"The type of the backup: \\\"full\\\" or \\\"differential\\\"\",\n \"enum\": [\n \"differential\",\n \"full\"\n ],\n \"type\": \"string\"\n },\n \"cassandraDatacenter\": {\n \"description\": \"The name of the CassandraDatacenter to back up\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"cassandraDatacenter\"\n ],\n \"type\": \"object\"\n },\n \"concurrencyPolicy\": {\n \"description\": \"Specifics if this backup task can be run concurrently with other active backup tasks. Valid values are:\\n- \\\"Allow\\\": allows multiple Tasks to run concurrently on Cassandra cluster\\n- \\\"Forbid\\\" (default): only a single task is executed at once\\nThe \\\"Allow\\\" property is only valid if all the other active Tasks have \\\"Allow\\\" as well.\",\n \"type\": \"string\"\n },\n \"cronSchedule\": {\n \"description\": \"CronSchedule is a cronjob format schedule for backups. Overrides any easier methods of defining the schedule\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"disabled\": {\n \"description\": \"Disabled if set ensures this job is not scheduling anything\",\n \"type\": \"boolean\"\n },\n \"operationType\": {\n \"default\": \"backup\",\n \"description\": \"Specifies the type of operation to be performed\",\n \"enum\": [\n \"backup\",\n \"purge\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"backupSpec\",\n \"cronSchedule\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Medusa Backup Schedule\",\n \"type\": \"object\"\n}", + "version": "medusa.k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Medusa Backup Schedule", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003emeshery-logo-light\u003c/title\u003e\u003cpolygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/\u003e\u003cpolygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/\u003e\u003cpolygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/\u003e\u003cpath d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/\u003e\u003cpath d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/\u003e\u003cpolygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/\u003e\u003cpolygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/\u003e\u003cpath d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/\u003e\u003cpath d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/\u003e\u003cpolygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaConfiguration.json b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaConfiguration.json new file mode 100644 index 00000000000..106fb0076bd --- /dev/null +++ b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaConfiguration.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "MedusaConfiguration", + "schema": "{\n \"description\": \"MedusaConfiguration is the Schema for the medusaconfigurations API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"MedusaConfigurationSpec defines the desired state of MedusaConfiguration\",\n \"properties\": {\n \"storageProperties\": {\n \"description\": \"StorageProperties defines the storage backend settings to use for the backups.\",\n \"properties\": {\n \"apiProfile\": {\n \"description\": \"AWS Profile to use for authentication.\",\n \"type\": \"string\"\n },\n \"backupGracePeriodInDays\": {\n \"description\": \"Age after which orphan sstables can be deleted from the storage backend.\\nProtects from race conditions between purge and ongoing backups.\\nDefaults to 10 days.\",\n \"type\": \"integer\"\n },\n \"bucketName\": {\n \"description\": \"The name of the bucket to use for the backups.\",\n \"type\": \"string\"\n },\n \"concurrentTransfers\": {\n \"default\": 0,\n \"description\": \"Number of concurrent uploads.\\nHelps maximizing the speed of uploads but puts more pressure on the network.\\nDefaults to 0.\",\n \"type\": \"integer\"\n },\n \"credentialsType\": {\n \"description\": \"Type of credentials to use for authentication.\\nCan be \\\"role-based\\\", \\\"credential-based\\\" or empty.\",\n \"enum\": [\n \"role-based\",\n \"credential-based\"\n ],\n \"type\": \"string\"\n },\n \"host\": {\n \"description\": \"Host to connect to for the storage backend.\",\n \"type\": \"string\"\n },\n \"maxBackupAge\": {\n \"default\": 0,\n \"description\": \"Maximum backup age that the purge process should observe.\",\n \"type\": \"integer\"\n },\n \"maxBackupCount\": {\n \"default\": 0,\n \"description\": \"Maximum number of backups to keep (used by the purge process).\\nDefault is unlimited.\",\n \"type\": \"integer\"\n },\n \"multiPartUploadThreshold\": {\n \"default\": 104857600,\n \"description\": \"File size over which cloud specific cli tools are used for transfer.\\nDefaults to 100 MB.\",\n \"type\": \"integer\"\n },\n \"podStorage\": {\n \"description\": \"Pod storage settings for the local storage provider\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"Pod local storage access modes\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"default\": \"10Gi\",\n \"description\": \"Size of the pod's storage in bytes.\\nDefaults to 10 GB.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"storageClassName\": {\n \"description\": \"Storage class name to use for the pod's storage.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"port\": {\n \"description\": \"Port to connect to for the storage backend.\",\n \"type\": \"integer\"\n },\n \"prefix\": {\n \"description\": \"Name of the top level folder in the backup bucket.\\nIf empty, the cluster name will be used.\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"Region of the storage bucket.\\nDefaults to \\\"default\\\".\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Whether to use SSL for the storage backend.\",\n \"type\": \"boolean\"\n },\n \"sslVerify\": {\n \"description\": \"When using SSL, whether to also verify the certificate.\",\n \"type\": \"boolean\"\n },\n \"storageProvider\": {\n \"description\": \"The storage backend to use for the backups.\",\n \"enum\": [\n \"google_storage\",\n \"azure_blobs\",\n \"s3\",\n \"s3_compatible\",\n \"s3_rgw\",\n \"ibm_storage\"\n ],\n \"type\": \"string\"\n },\n \"storageSecretRef\": {\n \"description\": \"Kubernetes Secret that stores the key file for the storage provider's API.\\nIf using 'local' storage, this value is ignored.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"transferMaxBandwidth\": {\n \"default\": \"50MB/s\",\n \"description\": \"Max upload bandwidth in MB/s.\\nDefaults to 50 MB/s.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Medusa Configuration\",\n \"type\": \"object\"\n}", + "version": "medusa.k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Medusa Configuration", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaRestoreJob.json b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaRestoreJob.json new file mode 100644 index 00000000000..a6414522279 --- /dev/null +++ b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaRestoreJob.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "MedusaRestoreJob", + "schema": "{\n \"description\": \"MedusaRestoreJob is the Schema for the medusarestorejobs API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"MedusaRestoreJobSpec defines the desired state of MedusaRestoreJob\",\n \"properties\": {\n \"backup\": {\n \"description\": \"The name of the MedusaBackup to restore.\",\n \"type\": \"string\"\n },\n \"cassandraDatacenter\": {\n \"description\": \"Name of the Cassandra datacenter to perform the restore on.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"backup\",\n \"cassandraDatacenter\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Medusa Restore Job\",\n \"type\": \"object\"\n}", + "version": "medusa.k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Medusa Restore Job", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003emeshery-logo-light\u003c/title\u003e\u003cpolygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/\u003e\u003cpolygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/\u003e\u003cpolygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/\u003e\u003cpath d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/\u003e\u003cpath d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/\u003e\u003cpolygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/\u003e\u003cpolygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/\u003e\u003cpath d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/\u003e\u003cpath d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/\u003e\u003cpolygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaTask.json b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaTask.json new file mode 100644 index 00000000000..83a3523f458 --- /dev/null +++ b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaTask.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "MedusaTask", + "schema": "{\n \"description\": \"MedusaTask is the Schema for the MedusaTasks API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"MedusaTaskSpec defines the desired state of MedusaTask\",\n \"properties\": {\n \"backupName\": {\n \"description\": \"Name of the backup.\\nWill be necessary for operations such as verify or status.\",\n \"type\": \"string\"\n },\n \"cassandraDatacenter\": {\n \"description\": \"The name of the CassandraDatacenter to run the task on\",\n \"type\": \"string\"\n },\n \"operation\": {\n \"description\": \"Requested operation to perform.\",\n \"enum\": [\n \"sync\",\n \"purge\",\n \"prepare_restore\"\n ],\n \"type\": \"string\"\n },\n \"restoreKey\": {\n \"description\": \"Restore key to use for the prepare_restore operation.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"cassandraDatacenter\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Medusa Task\",\n \"type\": \"object\"\n}", + "version": "medusa.k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Medusa Task", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003emeshery-logo-light\u003c/title\u003e\u003cpolygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/\u003e\u003cpolygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/\u003e\u003cpolygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/\u003e\u003cpath d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/\u003e\u003cpath d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/\u003e\u003cpolygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/\u003e\u003cpolygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/\u003e\u003cpath d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/\u003e\u003cpath d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/\u003e\u003cpolygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/Reaper.json b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/Reaper.json new file mode 100644 index 00000000000..19424180599 --- /dev/null +++ b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/Reaper.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "Reaper", + "schema": "{\n \"description\": \"Reaper is the Schema for the reapers API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"ReaperSpec defines the desired state of Reaper\",\n \"properties\": {\n \"ServiceAccountName\": {\n \"default\": \"default\",\n \"type\": \"string\"\n },\n \"affinity\": {\n \"description\": \"Affinity applied to the Reaper pods.\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"autoScheduling\": {\n \"description\": \"Auto scheduling properties. When you enable the auto-schedule feature, Reaper dynamically schedules repairs for\\nall non-system keyspaces in a cluster. A cluster's keyspaces are monitored and any modifications (additions or\\nremovals) are detected. When a new keyspace is created, a new repair schedule is created automatically for that\\nkeyspace. Conversely, when a keyspace is removed, the corresponding repair schedule is deleted.\",\n \"properties\": {\n \"enabled\": {\n \"default\": false,\n \"type\": \"boolean\"\n },\n \"excludedClusters\": {\n \"description\": \"ExcludedClusters are the clusters that are to be excluded from the repair schedule.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"excludedKeyspaces\": {\n \"description\": \"ExcludedKeyspaces are the keyspaces that are to be excluded from the repair schedule.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"initialDelayPeriod\": {\n \"default\": \"PT15S\",\n \"description\": \"InitialDelay is the amount of delay time before the schedule period starts. Must be a valid ISO-8601 duration\\nstring. The default is \\\"PT15S\\\" (15 seconds).\",\n \"pattern\": \"([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?\",\n \"type\": \"string\"\n },\n \"percentUnrepairedThreshold\": {\n \"default\": 10,\n \"description\": \"PercentUnrepairedThreshold is the percentage of unrepaired data over which an incremental repair should be\\nstarted. Only relevant when using repair type INCREMENTAL.\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"periodBetweenPolls\": {\n \"default\": \"PT10M\",\n \"description\": \"PeriodBetweenPolls is the interval time to wait before checking whether to start a repair task. Must be a valid\\nISO-8601 duration string. The default is \\\"PT10M\\\" (10 minutes).\",\n \"pattern\": \"([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?\",\n \"type\": \"string\"\n },\n \"repairType\": {\n \"default\": \"AUTO\",\n \"description\": \"RepairType is the type of repair to create:\\n- REGULAR creates a regular repair (non-adaptive and non-incremental);\\n- ADAPTIVE creates an adaptive repair; adaptive repairs are most suited for Cassandra 3.\\n- INCREMENTAL creates an incremental repair; incremental repairs should only be used with Cassandra 4+.\\n- AUTO chooses between ADAPTIVE and INCREMENTAL depending on the Cassandra server version; ADAPTIVE for Cassandra\\n3 and INCREMENTAL for Cassandra 4+.\",\n \"enum\": [\n \"REGULAR\",\n \"ADAPTIVE\",\n \"INCREMENTAL\",\n \"AUTO\"\n ],\n \"type\": \"string\"\n },\n \"scheduleSpreadPeriod\": {\n \"default\": \"PT6H\",\n \"description\": \"ScheduleSpreadPeriod is the time spacing between each of the repair schedules that is to be carried out. Must be\\na valid ISO-8601 duration string. The default is \\\"PT6H\\\" (6 hours).\",\n \"pattern\": \"([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?\",\n \"type\": \"string\"\n },\n \"timeBeforeFirstSchedule\": {\n \"default\": \"PT5M\",\n \"description\": \"TimeBeforeFirstSchedule is the grace period before the first repair in the schedule is started. Must be a valid\\nISO-8601 duration string. The default is \\\"PT5M\\\" (5 minutes).\",\n \"pattern\": \"([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"cassandraUserSecretRef\": {\n \"description\": \"Defines the username and password that Reaper will use to authenticate CQL connections to Cassandra clusters.\\nThese credentials will be automatically turned into CQL roles by cass-operator when bootstrapping the datacenter,\\nthen passed to the Reaper instance, so that it can authenticate against nodes in the datacenter using CQL. If CQL\\nauthentication is not required, leave this field empty. The secret must be in the same namespace as Reaper itself\\nand must contain two keys: \\\"username\\\" and \\\"password\\\".\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"clientEncryptionStores\": {\n \"description\": \"Client encryption stores which are used by Cassandra and Reaper.\",\n \"properties\": {\n \"keystorePasswordSecretRef\": {\n \"description\": \"ref to the secret that contains the keystore password if password stored in different secret than keystoreSecretRef\\nif key isn't specified explicitly, \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"keystoreSecretRef\": {\n \"description\": \"ref to the secret that contains the keystore and optionally its password (which can also be specified through\\nthe keystorePasswordSecretRef field)\\nif keys are not specified, \\\"keystore\\\" entry and a \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"truststorePasswordSecretRef\": {\n \"description\": \"ref to the secret that contains the truststore password if password stored in different secret than keystoreSecretRef\\nif key isn't specified explicitly, \\\"truststore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"truststoreSecretRef\": {\n \"description\": \"ref to the secret that contains the truststore and optionally its password (which can also be specified through\\nthe truststorePasswordSecretRef field)\\nif keys are not specified explicitly, \\\"keystore\\\" entry and a \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"keystoreSecretRef\",\n \"truststoreSecretRef\"\n ],\n \"type\": \"object\"\n },\n \"containerImage\": {\n \"default\": {\n \"name\": \"cassandra-reaper\",\n \"repository\": \"thelastpickle\",\n \"tag\": \"3.6.1\"\n },\n \"description\": \"The image to use for the Reaper pod main container.\\nThe default is \\\"thelastpickle/cassandra-reaper:3.6.1\\\".\\nTODO: update with real release version.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"datacenterAvailability\": {\n \"default\": \"ALL\",\n \"description\": \"DatacenterAvailability indicates to Reaper its deployment in relation to the target datacenter's network.\\nFor single-DC clusters, the default (ALL) is fine. For multi-DC clusters, it is recommended to use EACH,\\nprovided that there is one Reaper instance managing each DC in the cluster; otherwise, if one single Reaper\\ninstance is going to manage more than one DC in the cluster, use ALL.\\nSee https://cassandra-reaper.io/docs/usage/multi_dc/.\",\n \"enum\": [\n \"LOCAL\",\n \"ALL\",\n \"EACH\"\n ],\n \"type\": \"string\"\n },\n \"datacenterRef\": {\n \"description\": \"DatacenterRef is the reference of a CassandraDatacenter resource that this Reaper instance should manage. It will\\nalso be used as the backend for persisting Reaper's state. Reaper must be able to access the JMX port (7199 by\\ndefault) and the CQL port (9042 by default) on this DC.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The datacenter name.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"The datacenter namespace. If empty, the datacenter will be assumed to reside in the same namespace as the Reaper\\ninstance.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"heapSize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"default\": \"2Gi\",\n \"description\": \"HeapSize sets the JVM heap size to use for Reaper.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"httpManagement\": {\n \"default\": {\n \"enabled\": false\n },\n \"properties\": {\n \"enabled\": {\n \"default\": false,\n \"description\": \"Enable/disable the HTTP management connection between Reaper and Cassandra.\\nWhen enabled, HTTP will be used instead of JMX for management connectivity between Cassandra\\nand Reaper. In future, this will be true by default\",\n \"type\": \"boolean\"\n },\n \"keystores\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"initContainerImage\": {\n \"description\": \"Deprecated: The main container image will be used for the init container as well.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"initContainerResources\": {\n \"description\": \"Init Container resources.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"initContainerSecurityContext\": {\n \"description\": \"InitContainerSecurityContext is the SecurityContext applied to the Reaper init container, used to perform schema\\nmigrations.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"jmxUserSecretRef\": {\n \"description\": \"Deprecated: JMX security is now based on CQL roles. Reaper will use cassandraUsefSecretRef for authentication,\\nthis field is ignored.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"keyspace\": {\n \"default\": \"reaper_db\",\n \"description\": \"The keyspace to use to store Reaper's state. Will default to \\\"reaper_db\\\" if unspecified. Will be created if it\\ndoes not exist, and if this Reaper resource is managed by K8ssandra.\",\n \"type\": \"string\"\n },\n \"livenessProbe\": {\n \"description\": \"LivenessProbe sets the Reaper liveness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"description\": \"labels and annotations for Reaper resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"labels/annotations that will be applied to all components\\ncreated by the CRD\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"pods\": {\n \"description\": \"labels/annotations for the pod components\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"description\": \"labels/annotations for the service component\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"podSecurityContext\": {\n \"description\": \"PodSecurityContext contains a pod-level SecurityContext to apply to Reaper pods.\",\n \"properties\": {\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"readinessProbe\": {\n \"description\": \"ReadinessProbe sets the Reaper readiness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Main Container resources.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"secretsProvider\": {\n \"default\": \"internal\",\n \"description\": \"SecretsProvider defines whether the secrets used for credentials and certs will be backed\\nby an external secret backend. This moves the responsibility of generating and storing\\nsecrets from the operators to the user and will rely on a mutating webhook to inject\\nthe secrets into the necessary resources\",\n \"enum\": [\n \"internal\",\n \"external\"\n ],\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext applied to the Reaper main container.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"skipSchemaMigration\": {\n \"default\": false,\n \"description\": \"Whether to skip schema migration. Schema migration is done in an init container on every Reaper deployment and\\ncan slow down Reaper's startup time. Besides, schema migration requires reading data at QUORUM. It can be skipped\\nif you know that the schema is already up-to-date, or if you know upfront that QUORUM cannot be achieved (for\\nexample, because a DC is down).\",\n \"type\": \"boolean\"\n },\n \"storageConfig\": {\n \"description\": \"If StorageType is \\\"local\\\", Reaper will need a Persistent Volume to persist its data. This field allows\\nconfiguring that Persistent Volume.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageType\": {\n \"default\": \"cassandra\",\n \"description\": \"The storage backend to store Reaper's data. Defaults to \\\"cassandra\\\" which causes Reaper to be stateless and store\\nits state to a Cassandra cluster it repairs (implying there must be one Reaper for each Cassandra cluster).\\nThe \\\"local\\\" option makes Reaper to store its state locally, allowing a single Reaper to repair several clusters.\",\n \"enum\": [\n \"cassandra\",\n \"local\"\n ],\n \"type\": \"string\"\n },\n \"telemetry\": {\n \"description\": \"Telemetry defines the desired telemetry integrations to deploy targeting the Reaper pods for all DCs in this cluster\\n(unless overridden by DC specific settings)\",\n \"properties\": {\n \"cassandra\": {\n \"properties\": {\n \"endpoint\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"relabels\": {\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion.\\nIt defines `\\u003cmetric_relabel_configs\\u003e`-section of Prometheus configuration.\\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"mcac\": {\n \"properties\": {\n \"enabled\": {\n \"description\": \"enabled sets whether MCAC (legacy metrics endpoint) is enabled.\\nThis is considered true by default.\",\n \"type\": \"boolean\"\n },\n \"metricFilters\": {\n \"description\": \"MetricFilters allows passing filters to MCAC in order to reduce the amount of extracted metrics.\\nNot setting this field will result in the default filters being used:\\n- \\\"deny:org.apache.cassandra.metrics.Table\\\"\\n- \\\"deny:org.apache.cassandra.metrics.table\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_ss_table_count\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.LiveSSTableCount\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_disk_space_used\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.LiveDiskSpaceUsed\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Pending\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Memtable\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Compaction\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.read\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.write\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.range\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.coordinator\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.dropped_mutations\\\"\\nSetting it to an empty list will result in all metrics being extracted.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"prometheus\": {\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"CommonLabels are applied to all serviceMonitors created.\",\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enable the creation of Prometheus serviceMonitors for this resource (Cassandra or Stargate).\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"vector\": {\n \"properties\": {\n \"components\": {\n \"properties\": {\n \"sinks\": {\n \"description\": \"Sinks is the list of sinks to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the sink.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the sink.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the sink.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sources\": {\n \"description\": \"Sources is the list of sources to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the source.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of the source.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"transforms\": {\n \"description\": \"Transforms is the list of transforms to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the transform.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the transform.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the transform.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enabled enables the Vector agent for this resource (Cassandra, Reaper or Stargate).\\nEnabling the vector agent will inject a sidecar container into the pod.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image is the name of the Vector image to use. If not set, the default image will be used.\\nkube:default=\\\"timberio/vector:0.26.0-alpine\\\"\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resources is the resource requirements for the Vector agent.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrapeInterval\": {\n \"description\": \"ScrapeInterval is the interval at which the Vector agent will scrape the metrics endpoint.\\nUse values like 30s, 1m, 5m.\\nkube:default=30s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations applied to the Reaper pods.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"uiUserSecretRef\": {\n \"description\": \"Defines the secret which contains the username and password for the Reaper UI and REST API authentication. When UiUserSecretRef.Name == \\\"\\\", authentication is turned off in the front-end only.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Reaper\",\n \"type\": \"object\"\n}", + "version": "reaper.k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Reaper", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003emeshery-logo-light\u003c/title\u003e\u003cpolygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/\u003e\u003cpolygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/\u003e\u003cpolygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/\u003e\u003cpath d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/\u003e\u003cpath d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/\u003e\u003cpolygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/\u003e\u003cpolygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/\u003e\u003cpath d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/\u003e\u003cpath d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/\u003e\u003cpolygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/ReplicatedSecret.json b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/ReplicatedSecret.json new file mode 100644 index 00000000000..41e33218696 --- /dev/null +++ b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/ReplicatedSecret.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "ReplicatedSecret", + "schema": "{\n \"description\": \"ReplicatedSecret is the Schema for the replicatedsecrets API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"ReplicatedSecretSpec defines the desired state of ReplicatedSecret\",\n \"properties\": {\n \"replicationTargets\": {\n \"description\": \"TargetContexts indicates the target clusters to which the secrets are replicated to. If empty, no clusters are targeted\",\n \"items\": {\n \"properties\": {\n \"addLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"AddLabels adds labels to the target secret.\",\n \"type\": \"object\"\n },\n \"dropLabels\": {\n \"description\": \"DropLabels defines the labels to be dropped from the secret before replication, this is sometimes neccessary to avoid infinite replication.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"k8sContextName\": {\n \"description\": \"K8sContextName defines the target cluster name as set in the ClientConfig. If left empty, current cluster is assumed\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"TODO Implement at some point\\nNamespace to replicate the data to in the target cluster. If left empty, current namespace is used.\",\n \"type\": \"string\"\n },\n \"targetPrefix\": {\n \"description\": \"TargetPrefix is the prefix to be used for the replicated secret in the target cluster. If left empty, the same name is used\\nas the original secret.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"selector\": {\n \"description\": \"Selector defines which secrets are replicated. If left empty, all the secrets are replicated\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Replicated Secret\",\n \"type\": \"object\"\n}", + "version": "replication.k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Replicated Secret", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003emeshery-logo-light\u003c/title\u003e\u003cpolygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/\u003e\u003cpolygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/\u003e\u003cpolygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/\u003e\u003cpath d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/\u003e\u003cpath d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/\u003e\u003cpolygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/\u003e\u003cpolygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/\u003e\u003cpath d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/\u003e\u003cpath d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/\u003e\u003cpolygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/Stargate.json b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/Stargate.json new file mode 100644 index 00000000000..40c2af1bc01 --- /dev/null +++ b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/components/Stargate.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "Stargate", + "schema": "{\n \"description\": \"Stargate is the Schema for the stargates API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"Specification of the desired behavior of this Stargate resource.\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity is the affinity to apply to all the Stargate pods.\\nLeave nil to let the controller reuse the same affinity rules used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"allowStargateOnDataNodes\": {\n \"default\": false,\n \"description\": \"AllowStargateOnDataNodes allows Stargate pods to be scheduled on a worker node already hosting data pods for this\\ndatacenter. The default is false, which means that Stargate pods will be scheduled on separate worker nodes.\\nNote: if the datacenter pods have HostNetwork:true, then the Stargate pods will inherit of it, in which case it\\nis possible that Stargate nodes won't be allowed to sit on data nodes even if this property is set to true,\\nbecause of port conflicts on the same IP address.\",\n \"type\": \"boolean\"\n },\n \"auth\": {\n \"default\": true,\n \"description\": \"Whether to enable authentication for Stargate. The default is true; it is highly recommended to always leave\\nauthentication turned on, not only on Stargate nodes, but also on data nodes as well. Note that Stargate REST\\nAPIs are currently only accessible if authentication is enabled, and if the authenticator in use in the whole\\ncluster is PasswordAuthenticator. The usage of any other authenticator will cause the REST API to become\\ninaccessible, see https://github.com/stargate/stargate/issues/792 for more. Stargate CQL API however remains\\naccessible even if authentication is disabled in the cluster, or when a custom authenticator is being used.\",\n \"type\": \"boolean\"\n },\n \"authOptions\": {\n \"description\": \"Authentication options.\",\n \"properties\": {\n \"apiAuthMethod\": {\n \"default\": \"Table\",\n \"description\": \"The method to use for authenticating requests to the Stargate APIs. Stargate currently has\\ntwo authentication / authorization methods:\\n- Table: table-based;\\n- JWT: JSON web token (JWT)-based.\\nThe methods are mutually exclusive. The default method is Table.\",\n \"enum\": [\n \"Table\",\n \"JWT\"\n ],\n \"type\": \"string\"\n },\n \"providerUrl\": {\n \"description\": \"Required when using JWT authentication method, ignored otherwise.\",\n \"type\": \"string\"\n },\n \"tokenTtlSeconds\": {\n \"description\": \"The time-to-live in seconds of an API authentication token. Valid only for the Table\\nauthentication method. By default, the token persists for 30 minutes with a sliding window.\\nEach use of the token to authenticate resets the 30-minute window. A token created and used\\nafter 29 minutes will authenticate a request, but if 31 minutes passes before use, the token\\nwill no longer exist.\\nDefault is 1800 seconds (30 minutes).\",\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"cassandraConfigMapRef\": {\n \"description\": \"CassandraConfigMapRef is a reference to a ConfigMap that holds Cassandra configuration.\\nThe map should have a key named cassandra_yaml.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"cassandraEncryption\": {\n \"description\": \"CassandraEncryption groups together encryption stores that are passed to the Stargate pods, so\\nthat they can be mounted as volumes.\",\n \"properties\": {\n \"clientEncryptionStores\": {\n \"description\": \"Client encryption stores which are used by Cassandra and Reaper.\",\n \"properties\": {\n \"keystorePasswordSecretRef\": {\n \"description\": \"ref to the secret that contains the keystore password if password stored in different secret than keystoreSecretRef\\nif key isn't specified explicitly, \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"keystoreSecretRef\": {\n \"description\": \"ref to the secret that contains the keystore and optionally its password (which can also be specified through\\nthe keystorePasswordSecretRef field)\\nif keys are not specified, \\\"keystore\\\" entry and a \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"truststorePasswordSecretRef\": {\n \"description\": \"ref to the secret that contains the truststore password if password stored in different secret than keystoreSecretRef\\nif key isn't specified explicitly, \\\"truststore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"truststoreSecretRef\": {\n \"description\": \"ref to the secret that contains the truststore and optionally its password (which can also be specified through\\nthe truststorePasswordSecretRef field)\\nif keys are not specified explicitly, \\\"keystore\\\" entry and a \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"keystoreSecretRef\",\n \"truststoreSecretRef\"\n ],\n \"type\": \"object\"\n },\n \"serverEncryptionStores\": {\n \"description\": \"Internode encryption stores which are used by Cassandra and Stargate.\",\n \"properties\": {\n \"keystorePasswordSecretRef\": {\n \"description\": \"ref to the secret that contains the keystore password if password stored in different secret than keystoreSecretRef\\nif key isn't specified explicitly, \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"keystoreSecretRef\": {\n \"description\": \"ref to the secret that contains the keystore and optionally its password (which can also be specified through\\nthe keystorePasswordSecretRef field)\\nif keys are not specified, \\\"keystore\\\" entry and a \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"truststorePasswordSecretRef\": {\n \"description\": \"ref to the secret that contains the truststore password if password stored in different secret than keystoreSecretRef\\nif key isn't specified explicitly, \\\"truststore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"truststoreSecretRef\": {\n \"description\": \"ref to the secret that contains the truststore and optionally its password (which can also be specified through\\nthe truststorePasswordSecretRef field)\\nif keys are not specified explicitly, \\\"keystore\\\" entry and a \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"keystoreSecretRef\",\n \"truststoreSecretRef\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"containerImage\": {\n \"default\": {\n \"repository\": \"stargateio\",\n \"tag\": \"v1.0.77\"\n },\n \"description\": \"ContainerImage is the image characteristics to use for Stargate containers. Leave nil\\nto use a default image.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"datacenterRef\": {\n \"description\": \"DatacenterRef is the namespace-local reference of a CassandraDatacenter resource where\\nStargate should be deployed.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"heapSize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"default\": \"256Mi\",\n \"description\": \"HeapSize sets the JVM heap size to use for Stargate. If no Resources are specified, this\\nvalue will also be used to set a default memory request and limit for the Stargate pods:\\nthese will be set to HeapSize x2 and x4, respectively.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"livenessProbe\": {\n \"description\": \"LivenessProbe sets the Stargate liveness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"description\": \"labels and annotations for Stargate resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"labels/annotations that will be applied to all components\\ncreated by the CRD\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"pods\": {\n \"description\": \"labels/annotations for the pod components\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"description\": \"labels/annotations for the service component\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is an optional map of label keys and values to restrict the scheduling of Stargate nodes to workers\\nwith matching labels.\\nLeave nil to let the controller reuse the same node selectors used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector\",\n \"type\": \"object\"\n },\n \"racks\": {\n \"description\": \"Racks allow customizing Stargate characteristics for specific racks in the datacenter.\",\n \"items\": {\n \"description\": \"StargateRackTemplate defines custom rules for Stargate pods in a given rack.\\nThese rules will be merged with rules defined at datacenter level in a StargateDatacenterTemplate; rack-level rules\\nhave precedence over datacenter-level ones.\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity is the affinity to apply to all the Stargate pods.\\nLeave nil to let the controller reuse the same affinity rules used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"allowStargateOnDataNodes\": {\n \"default\": false,\n \"description\": \"AllowStargateOnDataNodes allows Stargate pods to be scheduled on a worker node already hosting data pods for this\\ndatacenter. The default is false, which means that Stargate pods will be scheduled on separate worker nodes.\\nNote: if the datacenter pods have HostNetwork:true, then the Stargate pods will inherit of it, in which case it\\nis possible that Stargate nodes won't be allowed to sit on data nodes even if this property is set to true,\\nbecause of port conflicts on the same IP address.\",\n \"type\": \"boolean\"\n },\n \"authOptions\": {\n \"description\": \"Authentication options.\",\n \"properties\": {\n \"apiAuthMethod\": {\n \"default\": \"Table\",\n \"description\": \"The method to use for authenticating requests to the Stargate APIs. Stargate currently has\\ntwo authentication / authorization methods:\\n- Table: table-based;\\n- JWT: JSON web token (JWT)-based.\\nThe methods are mutually exclusive. The default method is Table.\",\n \"enum\": [\n \"Table\",\n \"JWT\"\n ],\n \"type\": \"string\"\n },\n \"providerUrl\": {\n \"description\": \"Required when using JWT authentication method, ignored otherwise.\",\n \"type\": \"string\"\n },\n \"tokenTtlSeconds\": {\n \"description\": \"The time-to-live in seconds of an API authentication token. Valid only for the Table\\nauthentication method. By default, the token persists for 30 minutes with a sliding window.\\nEach use of the token to authenticate resets the 30-minute window. A token created and used\\nafter 29 minutes will authenticate a request, but if 31 minutes passes before use, the token\\nwill no longer exist.\\nDefault is 1800 seconds (30 minutes).\",\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"cassandraConfigMapRef\": {\n \"description\": \"CassandraConfigMapRef is a reference to a ConfigMap that holds Cassandra configuration.\\nThe map should have a key named cassandra_yaml.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"containerImage\": {\n \"default\": {\n \"repository\": \"stargateio\",\n \"tag\": \"v1.0.77\"\n },\n \"description\": \"ContainerImage is the image characteristics to use for Stargate containers. Leave nil\\nto use a default image.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"heapSize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"default\": \"256Mi\",\n \"description\": \"HeapSize sets the JVM heap size to use for Stargate. If no Resources are specified, this\\nvalue will also be used to set a default memory request and limit for the Stargate pods:\\nthese will be set to HeapSize x2 and x4, respectively.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"livenessProbe\": {\n \"description\": \"LivenessProbe sets the Stargate liveness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"description\": \"labels and annotations for Stargate resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"labels/annotations that will be applied to all components\\ncreated by the CRD\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"pods\": {\n \"description\": \"labels/annotations for the pod components\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"description\": \"labels/annotations for the service component\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name is the rack name. It must correspond to an existing rack name in the CassandraDatacenter resource where\\nStargate is being deployed, otherwise it will be ignored.\",\n \"minLength\": 2,\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is an optional map of label keys and values to restrict the scheduling of Stargate nodes to workers\\nwith matching labels.\\nLeave nil to let the controller reuse the same node selectors used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector\",\n \"type\": \"object\"\n },\n \"readinessProbe\": {\n \"description\": \"ReadinessProbe sets the Stargate readiness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Resources is the Kubernetes resource requests and limits to apply, per Stargate pod. Leave\\nnil to use defaults.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"secretsProvider\": {\n \"default\": \"internal\",\n \"description\": \"SecretsProvider defines whether the secrets used for credentials and certs will be backed\\nby an external secret backend. This moves the responsibility of generating and storing\\nsecrets from the operators to the user and will rely on a mutating webhook to inject\\nthe secrets into the necessary resources\",\n \"enum\": [\n \"internal\",\n \"external\"\n ],\n \"type\": \"string\"\n },\n \"serviceAccount\": {\n \"default\": \"default\",\n \"description\": \"ServiceAccount is the service account name to use for Stargate pods.\",\n \"type\": \"string\"\n },\n \"telemetry\": {\n \"description\": \"Telemetry defines the desired telemetry integrations to deploy targeting the Stargate pods for all DCs in this cluster\\n(unless overridden by DC specific settings)\",\n \"properties\": {\n \"cassandra\": {\n \"properties\": {\n \"endpoint\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"relabels\": {\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion.\\nIt defines `\\u003cmetric_relabel_configs\\u003e`-section of Prometheus configuration.\\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"mcac\": {\n \"properties\": {\n \"enabled\": {\n \"description\": \"enabled sets whether MCAC (legacy metrics endpoint) is enabled.\\nThis is considered true by default.\",\n \"type\": \"boolean\"\n },\n \"metricFilters\": {\n \"description\": \"MetricFilters allows passing filters to MCAC in order to reduce the amount of extracted metrics.\\nNot setting this field will result in the default filters being used:\\n- \\\"deny:org.apache.cassandra.metrics.Table\\\"\\n- \\\"deny:org.apache.cassandra.metrics.table\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_ss_table_count\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.LiveSSTableCount\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_disk_space_used\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.LiveDiskSpaceUsed\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Pending\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Memtable\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Compaction\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.read\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.write\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.range\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.coordinator\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.dropped_mutations\\\"\\nSetting it to an empty list will result in all metrics being extracted.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"prometheus\": {\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"CommonLabels are applied to all serviceMonitors created.\",\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enable the creation of Prometheus serviceMonitors for this resource (Cassandra or Stargate).\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"vector\": {\n \"properties\": {\n \"components\": {\n \"properties\": {\n \"sinks\": {\n \"description\": \"Sinks is the list of sinks to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the sink.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the sink.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the sink.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sources\": {\n \"description\": \"Sources is the list of sources to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the source.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of the source.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"transforms\": {\n \"description\": \"Transforms is the list of transforms to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the transform.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the transform.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the transform.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enabled enables the Vector agent for this resource (Cassandra, Reaper or Stargate).\\nEnabling the vector agent will inject a sidecar container into the pod.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image is the name of the Vector image to use. If not set, the default image will be used.\\nkube:default=\\\"timberio/vector:0.26.0-alpine\\\"\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resources is the resource requirements for the Vector agent.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrapeInterval\": {\n \"description\": \"ScrapeInterval is the interval at which the Vector agent will scrape the metrics endpoint.\\nUse values like 30s, 1m, 5m.\\nkube:default=30s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations are tolerations to apply to the Stargate pods.\\nLeave nil to let the controller reuse the same tolerations used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readinessProbe\": {\n \"description\": \"ReadinessProbe sets the Stargate readiness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Resources is the Kubernetes resource requests and limits to apply, per Stargate pod. Leave\\nnil to use defaults.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"secretsProvider\": {\n \"default\": \"internal\",\n \"description\": \"SecretsProvider defines whether the secrets used for credentials and certs will be backed\\nby an external secret backend. This moves the responsibility of generating and storing\\nsecrets from the operators to the user and will rely on a mutating webhook to inject\\nthe secrets into the necessary resources\",\n \"enum\": [\n \"internal\",\n \"external\"\n ],\n \"type\": \"string\"\n },\n \"serviceAccount\": {\n \"default\": \"default\",\n \"description\": \"ServiceAccount is the service account name to use for Stargate pods.\",\n \"type\": \"string\"\n },\n \"size\": {\n \"default\": 1,\n \"description\": \"Size is the number of Stargate instances to deploy in each datacenter. They will be spread evenly across racks.\",\n \"format\": \"int32\",\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"telemetry\": {\n \"description\": \"Telemetry defines the desired telemetry integrations to deploy targeting the Stargate pods for all DCs in this cluster\\n(unless overridden by DC specific settings)\",\n \"properties\": {\n \"cassandra\": {\n \"properties\": {\n \"endpoint\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"relabels\": {\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion.\\nIt defines `\\u003cmetric_relabel_configs\\u003e`-section of Prometheus configuration.\\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"mcac\": {\n \"properties\": {\n \"enabled\": {\n \"description\": \"enabled sets whether MCAC (legacy metrics endpoint) is enabled.\\nThis is considered true by default.\",\n \"type\": \"boolean\"\n },\n \"metricFilters\": {\n \"description\": \"MetricFilters allows passing filters to MCAC in order to reduce the amount of extracted metrics.\\nNot setting this field will result in the default filters being used:\\n- \\\"deny:org.apache.cassandra.metrics.Table\\\"\\n- \\\"deny:org.apache.cassandra.metrics.table\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_ss_table_count\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.LiveSSTableCount\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_disk_space_used\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.LiveDiskSpaceUsed\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Pending\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Memtable\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Compaction\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.read\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.write\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.range\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.coordinator\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.dropped_mutations\\\"\\nSetting it to an empty list will result in all metrics being extracted.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"prometheus\": {\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"CommonLabels are applied to all serviceMonitors created.\",\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enable the creation of Prometheus serviceMonitors for this resource (Cassandra or Stargate).\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"vector\": {\n \"properties\": {\n \"components\": {\n \"properties\": {\n \"sinks\": {\n \"description\": \"Sinks is the list of sinks to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the sink.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the sink.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the sink.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sources\": {\n \"description\": \"Sources is the list of sources to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the source.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of the source.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"transforms\": {\n \"description\": \"Transforms is the list of transforms to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the transform.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the transform.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the transform.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enabled enables the Vector agent for this resource (Cassandra, Reaper or Stargate).\\nEnabling the vector agent will inject a sidecar container into the pod.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image is the name of the Vector image to use. If not set, the default image will be used.\\nkube:default=\\\"timberio/vector:0.26.0-alpine\\\"\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resources is the resource requirements for the Vector agent.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrapeInterval\": {\n \"description\": \"ScrapeInterval is the interval at which the Vector agent will scrape the metrics endpoint.\\nUse values like 30s, 1m, 5m.\\nkube:default=30s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations are tolerations to apply to the Stargate pods.\\nLeave nil to let the controller reuse the same tolerations used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"datacenterRef\",\n \"size\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Stargate\",\n \"type\": \"object\"\n}", + "version": "stargate.k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Stargate", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003emeshery-logo-light\u003c/title\u003e\u003cpolygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/\u003e\u003cpolygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/\u003e\u003cpolygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/\u003e\u003cpath d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/\u003e\u003cpath d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/\u003e\u003cpolygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/\u003e\u003cpolygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/\u003e\u003cpath d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/\u003e\u003cpath d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/\u003e\u003cpolygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/\u003e\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/model.json b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/model.json new file mode 100644 index 00000000000..20957ff5feb --- /dev/null +++ b/server/meshmodel/k8ssandra-operator/1.19.0-20240830180503-7eca0003/v1.0.0/model.json @@ -0,0 +1,42 @@ +{ + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "capabilities": null, + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/CassandraDatacenter.json b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/CassandraDatacenter.json new file mode 100644 index 00000000000..fd7b417d4e6 --- /dev/null +++ b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/CassandraDatacenter.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "CassandraDatacenter", + "schema": "{\n \"description\": \"CassandraDatacenter is the Schema for the cassandradatacenters API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"CassandraDatacenterSpec defines the desired state of a CassandraDatacenter\",\n \"format\": \"textarea\",\n \"properties\": {\n \"additionalAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Additional Annotations allows to define additional labels that will be included in all objects created by the operator. Note, user can override values set by default from the cass-operator and doing so could break cass-operator functionality.\",\n \"type\": \"object\"\n },\n \"additionalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Additional Labels allows to define additional labels that will be included in all objects created by the operator. Note, user can override values set by default from the cass-operator and doing so could break cass-operator functionality.\",\n \"type\": \"object\"\n },\n \"additionalSeeds\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalServiceConfig\": {\n \"description\": \"AdditionalServiceConfig allows to define additional parameters that are included in the created Services. Note, user can override values set by cass-operator and doing so could break cass-operator functionality.\\nAvoid label \\\"cass-operator\\\" and anything that starts with \\\"cassandra.datastax.com/\\\"\",\n \"properties\": {\n \"additionalSeedService\": {\n \"description\": \"ServiceConfigAdditions exposes additional options for each service\",\n \"properties\": {\n \"additionalAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"additionalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"allpodsService\": {\n \"description\": \"ServiceConfigAdditions exposes additional options for each service\",\n \"properties\": {\n \"additionalAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"additionalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"dcService\": {\n \"description\": \"ServiceConfigAdditions exposes additional options for each service\",\n \"properties\": {\n \"additionalAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"additionalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nodePortService\": {\n \"description\": \"ServiceConfigAdditions exposes additional options for each service\",\n \"properties\": {\n \"additionalAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"additionalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"seedService\": {\n \"description\": \"ServiceConfigAdditions exposes additional options for each service\",\n \"properties\": {\n \"additionalAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"additionalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"allowMultipleNodesPerWorker\": {\n \"description\": \"Turning this option on allows multiple server pods to be created on a k8s worker node, by removing the default pod anti affinity rules.\\nBy default the operator creates just one server pod per k8s worker node. Using custom affinity rules might require turning this\\noption on in which case the defaults are not set.\",\n \"type\": \"boolean\"\n },\n \"canaryUpgrade\": {\n \"description\": \"Indicates that configuration and container image changes should only be pushed to\\nthe first rack of the datacenter\",\n \"type\": \"boolean\"\n },\n \"canaryUpgradeCount\": {\n \"description\": \"The number of nodes that will be updated when CanaryUpgrade is true. Note that the value is\\neither 0 or greater than the rack size, then all nodes in the rack will get updated.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"cdc\": {\n \"description\": \"CDC allows configuration of the change data capture agent which can run within the Management API container. Use it to send data to Pulsar.\",\n \"properties\": {\n \"cdcConcurrentProcessors\": {\n \"type\": \"integer\"\n },\n \"cdcPollIntervalM\": {\n \"type\": \"integer\"\n },\n \"cdcWorkingDir\": {\n \"type\": \"string\"\n },\n \"errorCommitLogReprocessEnabled\": {\n \"type\": \"boolean\"\n },\n \"pulsarAuthParams\": {\n \"type\": \"string\"\n },\n \"pulsarAuthPluginClassName\": {\n \"type\": \"string\"\n },\n \"pulsarBatchDelayInMs\": {\n \"type\": \"integer\"\n },\n \"pulsarKeyBasedBatcher\": {\n \"type\": \"boolean\"\n },\n \"pulsarMaxPendingMessages\": {\n \"type\": \"integer\"\n },\n \"pulsarMaxPendingMessagesAcrossPartitions\": {\n \"type\": \"integer\"\n },\n \"pulsarServiceUrl\": {\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"sslAllowInsecureConnection\": {\n \"type\": \"string\"\n },\n \"sslCipherSuites\": {\n \"type\": \"string\"\n },\n \"sslEnabledProtocols\": {\n \"type\": \"string\"\n },\n \"sslHostnameVerificationEnable\": {\n \"type\": \"string\"\n },\n \"sslKeystorePassword\": {\n \"type\": \"string\"\n },\n \"sslKeystorePath\": {\n \"type\": \"string\"\n },\n \"sslProvider\": {\n \"type\": \"string\"\n },\n \"sslTruststorePassword\": {\n \"type\": \"string\"\n },\n \"sslTruststorePath\": {\n \"type\": \"string\"\n },\n \"sslTruststoreType\": {\n \"type\": \"string\"\n },\n \"topicPrefix\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pulsarServiceUrl\"\n ],\n \"type\": \"object\"\n },\n \"clusterName\": {\n \"description\": \"The name by which CQL clients and instances will know the cluster. If the same\\ncluster name is shared by multiple Datacenters in the same Kubernetes namespace,\\nthey will join together in a multi-datacenter cluster.\",\n \"minLength\": 2,\n \"type\": \"string\"\n },\n \"configBuilderImage\": {\n \"description\": \"Container image for the config builder init container. Overrides value from ImageConfig ConfigBuilderImage\",\n \"type\": \"string\"\n },\n \"configBuilderResources\": {\n \"description\": \"Kubernetes resource requests and limits per server config initialization container.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"configSecret\": {\n \"description\": \"ConfigSecret is the name of a secret that contains configuration for Cassandra. The\\nsecret is expected to have a property named config whose value should be a JSON\\nformatted string that should look like this:\\n\\n\\n config: |-\\n {\\n \\\"cassandra-yaml\\\": {\\n \\\"read_request_timeout_in_ms\\\": 10000\\n },\\n \\\"jmv-options\\\": {\\n \\\"max_heap_size\\\": 1024M\\n }\\n }\\n\\n\\nConfigSecret is mutually exclusive with Config. ConfigSecret takes precedence and\\nwill be used exclusively if both properties are set. The operator sets a watch such\\nthat an update to the secret will trigger an update of the StatefulSets.\",\n \"type\": \"string\"\n },\n \"datacenterName\": {\n \"description\": \"DatacenterName allows to override the name of the Cassandra datacenter. Kubernetes objects will be named after a sanitized version of it if set, and if not metadata.name. In Cassandra the DC name will be overridden by this value.\\nIt may generate some confusion as objects created for the DC will have a different name than the CasandraDatacenter object itself.\\nThis setting can create conflicts if multiple DCs coexist in the same namespace if metadata.name for a DC with no override is set to the same value as the override name of another DC.\\nUse cautiously.\",\n \"type\": \"string\"\n },\n \"disableSystemLoggerSidecar\": {\n \"description\": \"Configuration for disabling the simple log tailing sidecar container. Our default is to have it enabled.\",\n \"type\": \"boolean\"\n },\n \"dockerImageRunsAsCassandra\": {\n \"description\": \"DEPRECATED This setting does nothing and defaults to true. Use SecurityContext instead.\",\n \"type\": \"boolean\"\n },\n \"dseWorkloads\": {\n \"properties\": {\n \"analyticsEnabled\": {\n \"type\": \"boolean\"\n },\n \"graphEnabled\": {\n \"type\": \"boolean\"\n },\n \"searchEnabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"forceUpgradeRacks\": {\n \"description\": \"Rack names in this list are set to the latest StatefulSet configuration\\neven if Cassandra nodes are down. Use this to recover from an upgrade that couldn't\\nroll out.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"managementApiAuth\": {\n \"description\": \"Config for the Management API certificates\",\n \"properties\": {\n \"insecure\": {\n \"type\": \"object\"\n },\n \"manual\": {\n \"properties\": {\n \"clientSecretName\": {\n \"type\": \"string\"\n },\n \"serverSecretName\": {\n \"type\": \"string\"\n },\n \"skipSecretValidation\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"clientSecretName\",\n \"serverSecretName\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"minReadySeconds\": {\n \"description\": \"MinReadySeconds sets the minimum number of seconds for which a newly created pod should be ready without any of its containers crashing, for it to be considered available. Defaults to 5 seconds and is set in the StatefulSet spec.\\nSetting to 0 might cause multiple Cassandra pods to restart at the same time despite PodDisruptionBudget settings.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"networking\": {\n \"properties\": {\n \"hostNetwork\": {\n \"type\": \"boolean\"\n },\n \"nodePort\": {\n \"properties\": {\n \"internode\": {\n \"type\": \"integer\"\n },\n \"internodeSSL\": {\n \"type\": \"integer\"\n },\n \"native\": {\n \"type\": \"integer\"\n },\n \"nativeSSL\": {\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nodeAffinityLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeAffinityLabels to pin the Datacenter, using node affinity\",\n \"type\": \"object\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"A map of label keys and values to restrict Cassandra node scheduling to k8s workers\\nwith matchiing labels.\\nMore info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector\",\n \"type\": \"object\"\n },\n \"podTemplateSpec\": {\n \"description\": \"PodTemplate provides customisation options (labels, annotations, affinity rules, resource requests, and so on) for the cassandra pods\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"Standard object's metadata.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Specification of the desired behavior of the pod.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\",\n \"properties\": {\n \"activeDeadlineSeconds\": {\n \"description\": \"Optional duration in seconds the pod may be active on the node relative to\\nStartTime before the system will actively try to mark it failed and kill associated containers.\\nValue must be a positive integer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"affinity\": {\n \"description\": \"If specified, the pod's scheduling constraints\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"automountServiceAccountToken\": {\n \"description\": \"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.\",\n \"type\": \"boolean\"\n },\n \"containers\": {\n \"description\": \"List of containers belonging to the pod.\\nContainers cannot currently be added or removed.\\nThere must be at least one container in a Pod.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"Set DNS policy for the pod.\\nDefaults to \\\"ClusterFirst\\\".\\nValid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.\\nDNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.\\nTo have DNS options set along with hostNetwork, you have to specify DNS policy\\nexplicitly to 'ClusterFirstWithHostNet'.\",\n \"type\": \"string\"\n },\n \"enableServiceLinks\": {\n \"description\": \"EnableServiceLinks indicates whether information about services should be injected into pod's\\nenvironment variables, matching the syntax of Docker links.\\nOptional: Defaults to true.\",\n \"type\": \"boolean\"\n },\n \"ephemeralContainers\": {\n \"description\": \"List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing\\npod to perform user-initiated actions such as debugging. This list cannot be specified when\\ncreating a pod, and it cannot be modified by updating the pod spec. In order to add an\\nephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.\",\n \"items\": {\n \"description\": \"An EphemeralContainer is a temporary container that you may add to an existing Pod for\\nuser-initiated activities such as debugging. Ephemeral containers have no resource or\\nscheduling guarantees, and they will not be restarted when they exit or when a Pod is\\nremoved or restarted. The kubelet may evict a Pod if an ephemeral container causes the\\nPod to exceed its resource allocation.\\n\\n\\nTo add an ephemeral container, use the ephemeralcontainers subresource of an existing\\nPod. Ephemeral containers may not be removed or restarted.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Lifecycle is not allowed for ephemeral containers.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the ephemeral container specified as a DNS_LABEL.\\nThis name must be unique among all containers, init containers and ephemeral containers.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"Ports are not allowed for ephemeral containers.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources\\nalready allocated to the pod.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for the container to manage the restart behavior of each\\ncontainer within a pod.\\nThis may only be set for init containers. You cannot set this field on\\nephemeral containers.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"Optional: SecurityContext defines the security options the ephemeral container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"targetContainerName\": {\n \"description\": \"If set, the name of the container from PodSpec that this ephemeral container targets.\\nThe ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.\\nIf not set then the ephemeral container uses the namespaces configured in the Pod spec.\\n\\n\\nThe container runtime must implement support for this feature. If the runtime does not\\nsupport namespace targeting then the result of setting this field is undefined.\",\n \"type\": \"string\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"hostAliases\": {\n \"description\": \"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts\\nfile if specified. This is only valid for non-hostNetwork pods.\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\\npod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"hostIPC\": {\n \"description\": \"Use the host's ipc namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostNetwork\": {\n \"description\": \"Host networking requested for this pod. Use the host's network namespace.\\nIf this option is set, the ports that will be used must be specified.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"hostPID\": {\n \"description\": \"Use the host's pid namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostUsers\": {\n \"description\": \"Use the host's user namespace.\\nOptional: Default to true.\\nIf set to true or not present, the pod will be run in the host user namespace, useful\\nfor when the pod needs a feature only available to the host user namespace, such as\\nloading a kernel module with CAP_SYS_MODULE.\\nWhen set to false, a new userns is created for the pod. Setting false is useful for\\nmitigating container breakout vulnerabilities even allowing users to run their\\ncontainers as root without actually having root privileges on the host.\\nThis field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.\",\n \"type\": \"boolean\"\n },\n \"hostname\": {\n \"description\": \"Specifies the hostname of the Pod\\nIf not specified, the pod's hostname will be set to a system-defined value.\",\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.\\nIf specified, these secrets will be passed to individual puller implementations for them to use.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"initContainers\": {\n \"description\": \"List of initialization containers belonging to the pod.\\nInit containers are executed in order prior to containers being started. If any\\ninit container fails, the pod is considered to have failed and is handled according\\nto its restartPolicy. The name for an init container or normal container must be\\nunique among all containers.\\nInit containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.\\nThe resourceRequirements of an init container are taken into account during scheduling\\nby finding the highest request/limit for each resource type, and then using the max of\\nof that value or the sum of the normal containers. Limits are applied to init containers\\nin a similar fashion.\\nInit containers cannot currently be added or removed.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"nodeName\": {\n \"description\": \"NodeName is a request to schedule this pod onto a specific node. If it is non-empty,\\nthe scheduler simply schedules this pod onto that node, assuming that it fits resource\\nrequirements.\",\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is a selector which must be true for the pod to fit on a node.\\nSelector which must match a node's labels for the pod to be scheduled on that node.\\nMore info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"os\": {\n \"description\": \"Specifies the OS of the containers in the pod.\\nSome pod and container fields are restricted if this is set.\\n\\n\\nIf the OS field is set to linux, the following fields must be unset:\\n-securityContext.windowsOptions\\n\\n\\nIf the OS field is set to windows, following fields must be unset:\\n- spec.hostPID\\n- spec.hostIPC\\n- spec.hostUsers\\n- spec.securityContext.seLinuxOptions\\n- spec.securityContext.seccompProfile\\n- spec.securityContext.fsGroup\\n- spec.securityContext.fsGroupChangePolicy\\n- spec.securityContext.sysctls\\n- spec.shareProcessNamespace\\n- spec.securityContext.runAsUser\\n- spec.securityContext.runAsGroup\\n- spec.securityContext.supplementalGroups\\n- spec.containers[*].securityContext.seLinuxOptions\\n- spec.containers[*].securityContext.seccompProfile\\n- spec.containers[*].securityContext.capabilities\\n- spec.containers[*].securityContext.readOnlyRootFilesystem\\n- spec.containers[*].securityContext.privileged\\n- spec.containers[*].securityContext.allowPrivilegeEscalation\\n- spec.containers[*].securityContext.procMount\\n- spec.containers[*].securityContext.runAsUser\\n- spec.containers[*].securityContext.runAsGroup\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name is the name of the operating system. The currently supported values are linux and windows.\\nAdditional value may be defined in future and can be one of:\\nhttps://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration\\nClients should expect to handle additional values and treat unrecognized values in this field as os: null\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"overhead\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.\\nThis field will be autopopulated at admission time by the RuntimeClass admission controller. If\\nthe RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.\\nThe RuntimeClass admission controller will reject Pod create requests which have the overhead already\\nset. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value\\ndefined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md\",\n \"type\": \"object\"\n },\n \"preemptionPolicy\": {\n \"description\": \"PreemptionPolicy is the Policy for preempting pods with lower priority.\\nOne of Never, PreemptLowerPriority.\\nDefaults to PreemptLowerPriority if unset.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"The priority value. Various system components use this field to find the\\npriority of the pod. When Priority Admission Controller is enabled, it\\nprevents users from setting this field. The admission controller populates\\nthis field from PriorityClassName.\\nThe higher the value, the higher the priority.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"priorityClassName\": {\n \"description\": \"If specified, indicates the pod's priority. \\\"system-node-critical\\\" and\\n\\\"system-cluster-critical\\\" are two special keywords which indicate the\\nhighest priorities with the former being the highest priority. Any other\\nname must be defined by creating a PriorityClass object with that name.\\nIf not specified, the pod priority will be default or zero if there is no\\ndefault.\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"If specified, all readiness gates will be evaluated for pod readiness.\\nA pod is ready when all its containers are ready AND\\nall conditions specified in the readiness gates have status equal to \\\"True\\\"\\nMore info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"resourceClaims\": {\n \"description\": \"ResourceClaims defines which ResourceClaims must be allocated\\nand reserved before the Pod is allowed to start. The resources\\nwill be made available to those containers which consume them\\nby name.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable.\",\n \"items\": {\n \"description\": \"PodResourceClaim references exactly one ResourceClaim through a ClaimSource.\\nIt adds a name to it that uniquely identifies the ResourceClaim inside the Pod.\\nContainers that need access to the ResourceClaim reference it with this name.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name uniquely identifies this resource claim inside the pod.\\nThis must be a DNS_LABEL.\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"Source describes where to find the ResourceClaim.\",\n \"properties\": {\n \"resourceClaimName\": {\n \"description\": \"ResourceClaimName is the name of a ResourceClaim object in the same\\nnamespace as this pod.\",\n \"type\": \"string\"\n },\n \"resourceClaimTemplateName\": {\n \"description\": \"ResourceClaimTemplateName is the name of a ResourceClaimTemplate\\nobject in the same namespace as this pod.\\n\\n\\nThe template will be used to create a new ResourceClaim, which will\\nbe bound to this pod. When this pod is deleted, the ResourceClaim\\nwill also be deleted. The pod name and resource name, along with a\\ngenerated component, will be used to form a unique name for the\\nResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.\\n\\n\\nThis field is immutable and no changes will be made to the\\ncorresponding ResourceClaim by the control plane after creating the\\nResourceClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for all containers within the pod.\\nOne of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.\\nDefault to Always.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\",\n \"type\": \"string\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used\\nto run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.\\nIf unset or empty, the \\\"legacy\\\" RuntimeClass will be used, which is an implicit class with an\\nempty definition that uses the default runtime handler.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"If specified, the pod will be dispatched by specified scheduler.\\nIf not specified, the pod will be dispatched by default scheduler.\",\n \"type\": \"string\"\n },\n \"schedulingGates\": {\n \"description\": \"SchedulingGates is an opaque list of values that if specified will block scheduling the pod.\\nIf schedulingGates is not empty, the pod will stay in the SchedulingGated state and the\\nscheduler will not attempt to schedule the pod.\\n\\n\\nSchedulingGates can only be set at pod creation time, and be removed only afterwards.\\n\\n\\nThis is a beta feature enabled by the PodSchedulingReadiness feature gate.\",\n \"items\": {\n \"description\": \"PodSchedulingGate is associated to a Pod to guard its scheduling.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the scheduling gate.\\nEach scheduling gate must have a unique name field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nOptional: Defaults to empty. See type description for default values of each field.\",\n \"properties\": {\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"description\": \"DeprecatedServiceAccount is a depreciated alias for ServiceAccountName.\\nDeprecated: Use serviceAccountName instead.\",\n \"type\": \"string\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run this pod.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\",\n \"type\": \"string\"\n },\n \"setHostnameAsFQDN\": {\n \"description\": \"If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default).\\nIn Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).\\nIn Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\\\\\\\SYSTEM\\\\\\\\CurrentControlSet\\\\\\\\Services\\\\\\\\Tcpip\\\\\\\\Parameters to FQDN.\\nIf a pod does not have FQDN, this has no effect.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"shareProcessNamespace\": {\n \"description\": \"Share a single process namespace between all of the containers in a pod.\\nWhen this is set containers will be able to view and signal processes from other containers\\nin the same pod, and the first process in each container will not be assigned PID 1.\\nHostPID and ShareProcessNamespace cannot both be set.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"subdomain\": {\n \"description\": \"If specified, the fully qualified Pod hostname will be \\\"\\u003chostname\\u003e.\\u003csubdomain\\u003e.\\u003cpod namespace\\u003e.svc.\\u003ccluster domain\\u003e\\\".\\nIf not specified, the pod will not have a domainname at all.\",\n \"type\": \"string\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nIf this value is nil, the default grace period will be used instead.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nDefaults to 30 seconds.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints describes how a group of pods ought to spread across topology\\ndomains. Scheduler will schedule pods in a way which abides by the constraints.\\nAll topologySpreadConstraints are ANDed.\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods.\\nPods that match this label selector are counted to determine the number of pods\\nin their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nMatchLabelKeys cannot be set when LabelSelector isn't set.\\nKeys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P |\\n- if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P P |\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\\n\\n\\nThis is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\\nwhen calculating pod topology spread skew. Options are:\\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating\\npod topology spread skew. Options are:\\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\\nhas a toleration, are included.\\n- Ignore: node taints are ignored. All nodes are included.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\\nthe spread constraint.\\n- DoNotSchedule (default) tells the scheduler not to schedule it.\\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n but giving higher precedence to topologies that would help reduce the\\n skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod\\nif and only if every possible node assignment for that pod would violate\\n\\\"MaxSkew\\\" on some topology.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 3/1/1:\\n| zone1 | zone2 | zone3 |\\n| P P P | P | P |\\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\\nwon't make it *more* imbalanced.\\nIt's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"description\": \"List of volumes that can be mounted by containers belonging to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"name of the volume.\\nMust be a DNS_LABEL and unique within the pod.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"containers\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"racks\": {\n \"description\": \"A list of the named racks in the datacenter, representing independent failure domains. The\\nnumber of racks should match the replication factor in the keyspaces you plan to create, and\\nthe number of racks cannot easily be changed once a datacenter is deployed.\",\n \"items\": {\n \"description\": \"Rack ...\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity rules to set for this rack only. Merged with values from PodTemplateSpec Affinity as well as NodeAffinityLabels. If you wish to override all the default\\nPodAntiAffinity rules, set allowMultipleWorkers to true, otherwise defaults are applied and then these Affinity settings are merged.\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The rack name\",\n \"minLength\": 2,\n \"type\": \"string\"\n },\n \"nodeAffinityLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeAffinityLabels to pin the rack, using node affinity\",\n \"type\": \"object\"\n },\n \"zone\": {\n \"description\": \"Deprecated. Use nodeAffinityLabels instead. DeprecatedZone name to pin the rack, using node affinity\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"ReadOnlyRootFilesystem makes the cassandra container to be run with a read-only root filesystem. Currently only functional when used with the\\nnew k8ssandra-client config builder (Cassandra 4.1 and newer and HCD)\",\n \"type\": \"boolean\"\n },\n \"replaceNodes\": {\n \"description\": \"Deprecated Use CassandraTask replacenode to achieve correct node replacement. A list of pod names that need to be replaced.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"resources\": {\n \"description\": \"Kubernetes resource requests and limits, per pod\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"rollingRestartRequested\": {\n \"description\": \"Deprecated. Use CassandraTask for rolling restarts. Whether to do a rolling restart at the next opportunity. The operator will set this back\\nto false once the restart is in progress.\",\n \"type\": \"boolean\"\n },\n \"serverImage\": {\n \"description\": \"Cassandra server image name. Use of ImageConfig to match ServerVersion is recommended instead of this value.\\nThis value will override anything set in the ImageConfig matching the ServerVersion\\nMore info: https://kubernetes.io/docs/concepts/containers/images\",\n \"type\": \"string\"\n },\n \"serverType\": {\n \"description\": \"Server type: \\\"cassandra\\\", \\\"dse\\\" or \\\"hcd\\\"\",\n \"enum\": [\n \"cassandra\",\n \"dse\",\n \"hcd\"\n ],\n \"type\": \"string\"\n },\n \"serverVersion\": {\n \"description\": \"Version string for config builder,\\nused to generate Cassandra server configuration\",\n \"pattern\": \"(6\\\\.[89]\\\\.\\\\d+)|(3\\\\.11\\\\.\\\\d+)|(4\\\\.\\\\d+\\\\.\\\\d+)|(5\\\\.\\\\d+\\\\.\\\\d+)|(1\\\\.\\\\d+\\\\.\\\\d+)\",\n \"type\": \"string\"\n },\n \"serviceAccount\": {\n \"description\": \"Deprecated DeprecatedServiceAccount Use ServiceAccountName instead, which takes precedence. The k8s service account to use for the server pods\",\n \"type\": \"string\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the Kubernetes service account to use for the server pods. This takes presedence over DeprecatedServiceAccount and both take precedence over\\nsetting it in the PodTemplateSpec.\",\n \"type\": \"string\"\n },\n \"size\": {\n \"description\": \"Desired number of Cassandra server nodes\",\n \"format\": \"int32\",\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"stopped\": {\n \"description\": \"A stopped CassandraDatacenter will have no running server pods, like using \\\"stop\\\" with\\ntraditional System V init scripts. Other Kubernetes resources will be left intact, and volumes\\nwill re-attach when the CassandraDatacenter workload is resumed.\",\n \"type\": \"boolean\"\n },\n \"storageConfig\": {\n \"description\": \"StorageConfig describes the persistent storage request of each server node\",\n \"properties\": {\n \"additionalVolumes\": {\n \"items\": {\n \"description\": \"AdditionalVolumes defines additional storage configurations\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Mount path into cassandra container\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the pvc / volume\",\n \"pattern\": \"[a-z0-9]([-a-z0-9]*[a-z0-9])?\",\n \"type\": \"string\"\n },\n \"pvcSpec\": {\n \"description\": \"PVCSpec is a persistent volume claim spec. Either this or VolumeSource is required.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeSource\": {\n \"description\": \"VolumeSource to mount the volume from (such as ConfigMap / Secret). This or PVCSpec is required.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"cassandraDataVolumeClaimSpec\": {\n \"description\": \"PersistentVolumeClaimSpec describes the common attributes of storage devices\\nand allows a Source for provider-specific attributes\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"superuserSecretName\": {\n \"description\": \"This secret defines the username and password for the Cassandra server superuser.\\nIf it is omitted, we will generate a secret instead.\",\n \"type\": \"string\"\n },\n \"systemLoggerImage\": {\n \"description\": \"Container image for the log tailing sidecar container. Overrides value from ImageConfig SystemLoggerImage\",\n \"type\": \"string\"\n },\n \"systemLoggerResources\": {\n \"description\": \"Kubernetes resource requests and limits per system logger container.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations applied to the Cassandra pod. Note that these cannot be overridden with PodTemplateSpec.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"users\": {\n \"description\": \"Cassandra users to bootstrap\",\n \"items\": {\n \"properties\": {\n \"secretName\": {\n \"type\": \"string\"\n },\n \"superuser\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"secretName\",\n \"superuser\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"clusterName\",\n \"serverType\",\n \"serverVersion\",\n \"size\",\n \"storageConfig\"\n ],\n \"type\": \"string\"\n }\n },\n \"title\": \"Cassandra Datacenter\",\n \"type\": \"object\"\n}", + "version": "cassandra.datastax.com/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "Cassandra Datacenter", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/CassandraTask.json b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/CassandraTask.json new file mode 100644 index 00000000000..34b36b886b1 --- /dev/null +++ b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/CassandraTask.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "CassandraTask", + "schema": "{\n \"description\": \"CassandraTask is the Schema for the cassandrajobs API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"CassandraTaskSpec defines the desired state of CassandraTask\",\n \"properties\": {\n \"concurrencyPolicy\": {\n \"description\": \"Specifics if this task can be run concurrently with other active tasks. Valid values are:\\n- \\\"Allow\\\": allows multiple Tasks to run concurrently on Cassandra cluster\\n- \\\"Forbid\\\" (default): only a single task is executed at once\\nThe \\\"Allow\\\" property is only valid if all the other active Tasks have \\\"Allow\\\" as well.\",\n \"type\": \"string\"\n },\n \"datacenter\": {\n \"description\": \"Which datacenter this task is targetting. Note, this must be a datacenter which the current cass-operator\\ncan access\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"API version of the referent.\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"If referring to a piece of an object instead of an entire object, this string\\nshould contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\\nFor example, if the object reference is to a container within a pod, this would take on a value like:\\n\\\"spec.containers{name}\\\" (where \\\"name\\\" refers to the name of the container that triggered\\nthe event) or if no container name is specified \\\"spec.containers[2]\\\" (container with\\nindex 2 in this pod). This syntax is chosen only to have some well-defined way of\\nreferencing a part of an object.\\nTODO: this design is not final and this field is subject to change in the future.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind of the referent.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/\",\n \"type\": \"string\"\n },\n \"resourceVersion\": {\n \"description\": \"Specific resourceVersion to which this reference is made, if any.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency\",\n \"type\": \"string\"\n },\n \"uid\": {\n \"description\": \"UID of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"jobs\": {\n \"description\": \"Jobs defines the jobs this task will execute (and their order)\",\n \"items\": {\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments are additional parameters for the command\",\n \"properties\": {\n \"end_token\": {\n \"type\": \"string\"\n },\n \"jobs\": {\n \"type\": \"integer\"\n },\n \"keyspace_name\": {\n \"type\": \"string\"\n },\n \"new_tokens\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NewTokens is a map of pod names to their newly-assigned tokens. Required for the move\\ncommand, ignored otherwise. Pods referenced in this map must exist; any existing pod not\\nreferenced in this map will not be moved.\",\n \"type\": \"object\"\n },\n \"no_snapshot\": {\n \"type\": \"boolean\"\n },\n \"no_validate\": {\n \"description\": \"Scrub arguments\",\n \"type\": \"boolean\"\n },\n \"pod_name\": {\n \"type\": \"string\"\n },\n \"rack\": {\n \"type\": \"string\"\n },\n \"skip_corrupted\": {\n \"type\": \"boolean\"\n },\n \"source_datacenter\": {\n \"type\": \"string\"\n },\n \"split_output\": {\n \"description\": \"Compaction arguments\",\n \"type\": \"boolean\"\n },\n \"start_token\": {\n \"type\": \"string\"\n },\n \"tables\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"command\": {\n \"description\": \"Command defines what is run against Cassandra pods\",\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"command\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy indicates the behavior n case of failure. Default is Never.\",\n \"type\": \"string\"\n },\n \"scheduledTime\": {\n \"description\": \"ScheduledTime indicates the earliest possible time this task is executed. This does not necessarily\\nequal to the time it is actually executed (if other tasks are blocking for example). If not set,\\nthe task will be executed immediately.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"ttlSecondsAfterFinished\": {\n \"description\": \"TTLSecondsAfterFinished defines how long the completed job will kept before being cleaned up. If set to 0\\nthe task will not be cleaned up by the cass-operator. If unset, the default time (86400s) is used.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Cassandra Task\",\n \"type\": \"object\"\n}", + "version": "control.k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Cassandra Task", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/ClientConfig.json b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/ClientConfig.json new file mode 100644 index 00000000000..07474395135 --- /dev/null +++ b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/ClientConfig.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "ClientConfig", + "schema": "{\n \"description\": \"ClientConfig is the Schema for the kubeconfigs API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"ClientConfigSpec defines the desired state of KubeConfig\",\n \"properties\": {\n \"contextName\": {\n \"description\": \"ContextName allows to override the object name for context-name. If not set, the ClientConfig.Name is used as context name\",\n \"type\": \"string\"\n },\n \"kubeConfigSecret\": {\n \"description\": \"KubeConfigSecret should reference an existing secret; the actual configuration will be read from\\nthis secret's \\\"kubeconfig\\\" key.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Client Config\",\n \"type\": \"object\"\n}", + "version": "config.k8ssandra.io/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "Client Config", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/K8ssandraCluster.json b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/K8ssandraCluster.json new file mode 100644 index 00000000000..37995ae24df --- /dev/null +++ b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/K8ssandraCluster.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "K8ssandraCluster", + "schema": "{\n \"description\": \"K8ssandraCluster is the Schema for the k8ssandraclusters API. The K8ssandraCluster CRD name is also the name of the\\nCassandra cluster (which corresponds to cluster_name in cassandra.yaml).\",\n \"properties\": {\n \"spec\": {\n \"description\": \"K8ssandraClusterSpec defines the desired state of K8ssandraCluster\",\n \"properties\": {\n \"auth\": {\n \"default\": true,\n \"description\": \"Whether to enable authentication in this cluster. The default is true; it is highly recommended to always leave\\nauthentication turned on. When enabled, authentication will be enforced not only on Cassandra nodes, but also on\\nReaper, Medusa and Stargate nodes, if any.\",\n \"type\": \"boolean\"\n },\n \"cassandra\": {\n \"description\": \"Cassandra is a specification of the Cassandra cluster. This includes everything from\\nthe number of datacenters, the k8s cluster where each DC should be deployed, node\\naffinity (via racks), individual C* node settings, JVM settings, and more.\",\n \"properties\": {\n \"additionalSeeds\": {\n \"description\": \"AdditionalSeeds specifies Cassandra node IPs for an existing datacenter. This is\\nprimarily intended for migrations from an existing Cassandra cluster that is not\\nmanaged by k8ssandra-operator. Note that this property should NOT be used to set\\nseeds for a DC that is or will be managed by k8ssandra-operator. k8ssandra-operator\\nalready manages seeds for DCs that it manages. If you have DNS set up such that you\\ncan resolve hostnames for the remote Cassandra cluster, then you can specify hostnames\\nhere; otherwise, use IP addresses.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"cdc\": {\n \"description\": \"CDC defines the desired state for CDC integrations. It can be used to feed mutation events from Cassandra into an Apache Pulsar cluster,\\nfrom where they can be expored to external systems.\",\n \"properties\": {\n \"cdcConcurrentProcessors\": {\n \"type\": \"integer\"\n },\n \"cdcPollIntervalM\": {\n \"type\": \"integer\"\n },\n \"cdcWorkingDir\": {\n \"type\": \"string\"\n },\n \"errorCommitLogReprocessEnabled\": {\n \"type\": \"boolean\"\n },\n \"pulsarAuthParams\": {\n \"type\": \"string\"\n },\n \"pulsarAuthPluginClassName\": {\n \"type\": \"string\"\n },\n \"pulsarBatchDelayInMs\": {\n \"type\": \"integer\"\n },\n \"pulsarKeyBasedBatcher\": {\n \"type\": \"boolean\"\n },\n \"pulsarMaxPendingMessages\": {\n \"type\": \"integer\"\n },\n \"pulsarMaxPendingMessagesAcrossPartitions\": {\n \"type\": \"integer\"\n },\n \"pulsarServiceUrl\": {\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"sslAllowInsecureConnection\": {\n \"type\": \"string\"\n },\n \"sslCipherSuites\": {\n \"type\": \"string\"\n },\n \"sslEnabledProtocols\": {\n \"type\": \"string\"\n },\n \"sslHostnameVerificationEnable\": {\n \"type\": \"string\"\n },\n \"sslKeystorePassword\": {\n \"type\": \"string\"\n },\n \"sslKeystorePath\": {\n \"type\": \"string\"\n },\n \"sslProvider\": {\n \"type\": \"string\"\n },\n \"sslTruststorePassword\": {\n \"type\": \"string\"\n },\n \"sslTruststorePath\": {\n \"type\": \"string\"\n },\n \"sslTruststoreType\": {\n \"type\": \"string\"\n },\n \"topicPrefix\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pulsarServiceUrl\"\n ],\n \"type\": \"object\"\n },\n \"clientEncryptionStores\": {\n \"description\": \"Client encryption stores which are used by Cassandra and Reaper.\",\n \"properties\": {\n \"keystorePasswordSecretRef\": {\n \"description\": \"ref to the secret that contains the keystore password if password stored in different secret than keystoreSecretRef\\nif key isn't specified explicitly, \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"keystoreSecretRef\": {\n \"description\": \"ref to the secret that contains the keystore and optionally its password (which can also be specified through\\nthe keystorePasswordSecretRef field)\\nif keys are not specified, \\\"keystore\\\" entry and a \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"truststorePasswordSecretRef\": {\n \"description\": \"ref to the secret that contains the truststore password if password stored in different secret than keystoreSecretRef\\nif key isn't specified explicitly, \\\"truststore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"truststoreSecretRef\": {\n \"description\": \"ref to the secret that contains the truststore and optionally its password (which can also be specified through\\nthe truststorePasswordSecretRef field)\\nif keys are not specified explicitly, \\\"keystore\\\" entry and a \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"keystoreSecretRef\",\n \"truststoreSecretRef\"\n ],\n \"type\": \"object\"\n },\n \"clusterName\": {\n \"description\": \"Override the Cassandra cluster name. If unspecified, the cluster name will be the same as the K8ssandraCluster\\nCRD name.\",\n \"type\": \"string\"\n },\n \"config\": {\n \"description\": \"CassandraConfig contains configuration settings that are applied to cassandra.yaml, dse.yaml\\nand the various jvm*.options files.\",\n \"properties\": {\n \"cassandraYaml\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"dseYaml\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"jvmOptions\": {\n \"properties\": {\n \"additionalJvm11ServerOptions\": {\n \"description\": \"Jvm11ServerOptions are additional options that will be passed on to the jvm11-server-options file.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalJvm8ServerOptions\": {\n \"description\": \"Jvm8ServerOptions are additional options that will be passed on to the jvm8-server-options file.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalJvmServerOptions\": {\n \"description\": \"JvmServerOptions are additional options that will be passed on to the jvm-server-options file.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalOptions\": {\n \"description\": \"Additional, arbitrary JVM options which are written into the cassandra-env.sh file.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"cassandra_available_processors\": {\n \"description\": \"Available CPU processors.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.available_processors.\",\n \"type\": \"integer\"\n },\n \"cassandra_disable_auth_caches_remote_configuration\": {\n \"description\": \"Disable remote configuration via JMX of auth caches.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.disable_auth_caches_remote_configuration.\",\n \"type\": \"boolean\"\n },\n \"cassandra_expiration_date_overflow_policy\": {\n \"description\": \"Defines how to handle INSERT requests with TTL exceeding the maximum supported expiration\\ndate.\\nPossible values include `REJECT`, `CAP`, `CAP_NOWARN`.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.expiration_date_overflow_policy.\",\n \"type\": \"string\"\n },\n \"cassandra_force_3_0_protocol_version\": {\n \"description\": \"Disabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -Dcassandra.force_3_0_protocol_version=true.\",\n \"type\": \"boolean\"\n },\n \"cassandra_force_default_indexing_page_size\": {\n \"description\": \"Disable dynamic calculation of the page size used when indexing an entire partition (during\\ninitial index build/rebuild).\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.force_default_indexing_page_size.\",\n \"type\": \"boolean\"\n },\n \"cassandra_max_hint_ttl_seconds\": {\n \"description\": \"Imposes an upper bound on hint lifetime below the normal min gc_grace_seconds.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.maxHintTTL.\",\n \"type\": \"integer\"\n },\n \"cassandra_metrics_reporter_config_file\": {\n \"description\": \"Enable pluggable metrics reporter.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.metricsReporterConfigFile.\\nTODO mountable directory\",\n \"type\": \"string\"\n },\n \"cassandra_ring_delay_ms\": {\n \"description\": \"Amount of time in milliseconds that a node waits before joining the ring.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.ring_delay_ms.\",\n \"type\": \"integer\"\n },\n \"cassandra_triggers_directory\": {\n \"description\": \"Default location for the trigger JARs.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.triggers_dir.\\nTODO mountable directory\",\n \"type\": \"string\"\n },\n \"cassandra_write_survey\": {\n \"description\": \"For testing new compaction and compression strategies.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.write_survey.\",\n \"type\": \"boolean\"\n },\n \"debug_disable_contended_annotations\": {\n \"description\": \"Disable honoring user code @Contended annotations.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:-RestrictContended.\",\n \"type\": \"boolean\"\n },\n \"debug_enable_flight_recorder\": {\n \"description\": \"Enable Flight Recorder (Use in production is subject to Oracle licensing).\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+FlightRecorder.\",\n \"type\": \"boolean\"\n },\n \"debug_listen_remote_debuggers\": {\n \"description\": \"Listen for JVM remote debuggers on port 1414.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1414\\\".\",\n \"type\": \"boolean\"\n },\n \"debug_log_compilation\": {\n \"description\": \"Make Cassandra JVM log internal method compilation (developers only).\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+LogCompilation.\",\n \"type\": \"boolean\"\n },\n \"debug_non_safepoints\": {\n \"description\": \"Whether the compiler should generate the necessary metadata for the parts of the code not at\\nsafe points as well. For use with Flight Recorder.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+DebugNonSafepoints.\",\n \"type\": \"boolean\"\n },\n \"debug_preserve_frame_pointer\": {\n \"description\": \"Preserve Frame Pointer.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+PreserveFramePointer.\",\n \"type\": \"boolean\"\n },\n \"debug_unlock_commercial_features\": {\n \"description\": \"Unlock commercial features.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+UnlockCommercialFeatures.\",\n \"type\": \"boolean\"\n },\n \"debug_unlock_diagnostic_vm_options\": {\n \"description\": \"Enabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+UnlockDiagnosticVMOptions.\",\n \"type\": \"boolean\"\n },\n \"gc\": {\n \"default\": \"G1GC\",\n \"description\": \"The name of the garbage collector to use. Depending on the Cassandra version, not all values\\nare supported: Cassandra 3.11 supports only G1GC and CMS; Cassandra 4.0 supports G1GC, ZGC,\\nShenandoah and Graal. This option will unlock the corresponding garbage collector with a\\ndefault configuration; to further tune the GC settings, use the additional JVM options field.\\nUse the special value Custom if you intend to use non-standard garbage collectors.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\",\n \"enum\": [\n \"G1GC\",\n \"CMS\",\n \"ZGC\",\n \"Shenandoah\",\n \"Graal\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"gc_cms_heap_size_young_generation\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Disabled by default. Can only be used when CMS garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -Xmn.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"gc_cms_initiating_occupancy_fraction\": {\n \"description\": \"Defaults to 75. Can only be used when CMS garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:CMSInitiatingOccupancyFraction.\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"gc_cms_max_tenuring_threshold\": {\n \"description\": \"Defaults to 1. Can only be used when CMS garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:MaxTenuringThreshold.\",\n \"type\": \"integer\"\n },\n \"gc_cms_survivor_ratio\": {\n \"description\": \"Defaults to 8. Can only be used when CMS garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:SurvivorRatio.\",\n \"type\": \"integer\"\n },\n \"gc_cms_wait_duration_ms\": {\n \"description\": \"Defaults to 10000. Can only be used when CMS garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:CMSWaitDuration.\",\n \"type\": \"integer\"\n },\n \"gc_g1_conc_threads\": {\n \"description\": \"Concurrent GC Threads. Can only be used when G1 garbage collector is used.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -XX:ConcGCThreads.\",\n \"type\": \"integer\"\n },\n \"gc_g1_initiating_heap_occupancy_percent\": {\n \"description\": \"Initiating Heap Occupancy Percentage. Can only be used when G1 garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -XX:InitiatingHeapOccupancyPercent.\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"gc_g1_max_gc_pause_ms\": {\n \"description\": \"G1GC Max GC Pause in milliseconds. Defaults to 500. Can only be used when G1 garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -XX:MaxGCPauseMillis.\",\n \"type\": \"integer\"\n },\n \"gc_g1_parallel_threads\": {\n \"description\": \"Parallel GC Threads. Can only be used when G1 garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -XX:ParallelGCThreads.\",\n \"type\": \"integer\"\n },\n \"gc_g1_rset_updating_pause_time_percent\": {\n \"description\": \"G1GC Updating Pause Time Percentage. Defaults to 5. Can only be used when G1 garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -XX:G1RSetUpdatingPauseTimePercent.\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"gc_print_application_stopped_time\": {\n \"description\": \"Print GC Application Stopped Time.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintGCApplicationStoppedTime.\",\n \"type\": \"boolean\"\n },\n \"gc_print_date_stamps\": {\n \"description\": \"Print GC Date Stamps. Disabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintGCDateStamps.\",\n \"type\": \"boolean\"\n },\n \"gc_print_details\": {\n \"description\": \"Print GC details.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintGCDetails.\",\n \"type\": \"boolean\"\n },\n \"gc_print_flss_statistics\": {\n \"description\": \"Print FLSS Statistics.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:PrintFLSStatistics=1.\",\n \"type\": \"boolean\"\n },\n \"gc_print_heap\": {\n \"description\": \"Print Heap at GC.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintHeapAtGC.\",\n \"type\": \"boolean\"\n },\n \"gc_print_log_file_size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Size of each log file.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:GCLogFileSize.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"gc_print_number_of_log_files\": {\n \"description\": \"Number of GC log files.\\nDisabled by default. Can only be used when the G1 garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:NumberOfGCLogFiles.\",\n \"type\": \"integer\"\n },\n \"gc_print_promotion_failure\": {\n \"description\": \"Print promotion failure.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintPromotionFailure.\",\n \"type\": \"boolean\"\n },\n \"gc_print_tenuring_distribution\": {\n \"description\": \"Print tenuring distribution.\\nDefaults to false.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintTenuringDistribution.\",\n \"type\": \"boolean\"\n },\n \"gc_print_use_log_file\": {\n \"description\": \"Whether to print GC logs to /var/log/cassandra/gc.log.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -Xloggc:/var/log/cassandra/gc.log.\",\n \"type\": \"boolean\"\n },\n \"gc_print_use_log_file_rotation\": {\n \"description\": \"Use GC Log File Rotation.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+UseGCLogFileRotation.\",\n \"type\": \"boolean\"\n },\n \"heapNewGenSize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Deprecated. Use gc_cms_heap_size_young_generation instead.\\nValid for CMS garbage collector only + Cassandra 3.11.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"heapSize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Deprecated. Use heap_initial_size and heap_max_size instead. If this field is defined,\\nit applies to both max_heap_size and initial_heap_size.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"heap_initial_size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Disabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Xms.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"heap_max_size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Disabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Xmx.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"jdk_allow_attach_self\": {\n \"description\": \"Allow the current VM to attach to itself.\\nDefaults to true.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -Djdk.attach.allowAttachSelf=true.\",\n \"type\": \"boolean\"\n },\n \"jmx_connection_type\": {\n \"description\": \"Cass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nPossible values for 3.11 include `local-no-auth`, `remote-no-auth`, and `remote-dse-unified-auth`. Defaults to `local-no-auth`.\\nPossible values for 4.0 include `local-no-auth`, `remote-no-auth`. Defaults to `local-no-auth`.\",\n \"type\": \"string\"\n },\n \"jmx_port\": {\n \"description\": \"Disabled by default. Defaults to 7199.\\nTODO Make Reaper aware of the JMX port if a non-default port is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\",\n \"type\": \"integer\"\n },\n \"jmx_remote_ssl\": {\n \"description\": \"Cass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nDefaults to false.\\nValid only when JmxConnectionType is \\\"remote-no-auth\\\", \\\"remote-dse-unified-auth\\\".\",\n \"type\": \"boolean\"\n },\n \"jmx_remote_ssl_opts\": {\n \"description\": \"Remote SSL options.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\",\n \"type\": \"string\"\n },\n \"jmx_remote_ssl_require_client_auth\": {\n \"description\": \"Require Client Authentication for remote SSL? Defaults to false.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\",\n \"type\": \"boolean\"\n },\n \"netty_eventloop_maxpendingtasks\": {\n \"description\": \"Defaults to 65536.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dio.netty.eventLoop.maxPendingTasks.\",\n \"type\": \"integer\"\n },\n \"netty_try_reflection_set_accessible\": {\n \"description\": \"Netty setting `io.netty.tryReflectionSetAccessible`.\\nDefaults to true.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -Dio.netty.tryReflectionSetAccessible=true.\",\n \"type\": \"boolean\"\n },\n \"nio_align_direct_memory\": {\n \"description\": \"Align direct memory allocations on page boundaries.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dsun.nio.PageAlignDirectMemory=true.\",\n \"type\": \"boolean\"\n },\n \"nio_maxcachedbuffersize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Defaults to 1048576.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Djdk.nio.maxCachedBufferSize.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"vm_always_pre_touch\": {\n \"description\": \"Ensure all memory is faulted and zeroed on startup.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+AlwaysPreTouch.\",\n \"type\": \"boolean\"\n },\n \"vm_crash_on_out_of_memory_error\": {\n \"description\": \"Disabled by default. Requires `exit_on_out_of_memory_error` to be disabled..\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+CrashOnOutOfMemoryError.\",\n \"type\": \"boolean\"\n },\n \"vm_disable_biased_locking\": {\n \"description\": \"Disable biased locking to avoid biased lock revocation pauses.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:-UseBiasedLocking.\\nNote: the Cass Config Builder option is named use_biased_locking, but setting it to true\\ndisables biased locking.\",\n \"type\": \"boolean\"\n },\n \"vm_disable_perf_shared_mem\": {\n \"description\": \"Disable hsperfdata mmap'ed file.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+PerfDisableSharedMem.\",\n \"type\": \"boolean\"\n },\n \"vm_enable_assertions\": {\n \"description\": \"Enable assertions.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -ea.\",\n \"type\": \"boolean\"\n },\n \"vm_enable_non_root_thread_priority\": {\n \"description\": \"Enable lowering thread priority without being root on linux.\\nSee CASSANDRA-1181 for details.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:ThreadPriorityPolicy=42.\",\n \"type\": \"boolean\"\n },\n \"vm_enable_thread_priorities\": {\n \"description\": \"Enable thread priorities.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+UseThreadPriorities.\",\n \"type\": \"boolean\"\n },\n \"vm_exit_on_out_of_memory_error\": {\n \"description\": \"Disabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+ExitOnOutOfMemoryError.\",\n \"type\": \"boolean\"\n },\n \"vm_guaranteed_safepoint_interval_ms\": {\n \"description\": \"Defaults to 300000 milliseconds.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:GuaranteedSafepointInterval.\",\n \"type\": \"integer\"\n },\n \"vm_heap_dump_on_out_of_memory_error\": {\n \"description\": \"Enabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+HeapDumpOnOutOfMemoryError.\",\n \"type\": \"boolean\"\n },\n \"vm_per_thread_stack_size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Per-thread stack size.\\nDefaults to 256Ki.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Xss.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"vm_prefer_ipv4\": {\n \"description\": \"Prefer binding to IPv4 network interfaces.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Djava.net.preferIPv4Stack=true.\",\n \"type\": \"boolean\"\n },\n \"vm_print_heap_histogram_on_out_of_memory_error\": {\n \"description\": \"Disabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.printHeapHistogramOnOutOfMemoryError.\",\n \"type\": \"boolean\"\n },\n \"vm_resize_tlab\": {\n \"description\": \"Allow resizing of thread-local allocation blocks.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+ResizeTLAB.\",\n \"type\": \"boolean\"\n },\n \"vm_string_table_size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"The size of interned string table. Larger sizes are beneficial to gossip.\\nDefaults to 1000003.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:StringTableSize.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"vm_use_numa\": {\n \"description\": \"Enabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+UseNUMA.\",\n \"type\": \"boolean\"\n },\n \"vm_use_tlab\": {\n \"description\": \"Enable thread-local allocation blocks.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+UseTLAB.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"containers\": {\n \"description\": \"Containers defines containers to be deployed in each Cassandra pod.\\nK8ssandra-operator and cass-operator will create their own containers, which can be referenced here to override specific settings,\\nsuch as mounts or resources request/limits for example.\\nExample:\\n containers:\\n - name: server-system-logger\\n - name: custom-container\\n image: busybox\\n - name: cassandra\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"datacenterName\": {\n \"description\": \"DatacenterName allows to override the name of the Cassandra datacenter. Kubernetes objects will be named after a sanitized version of it if set, and if not metadata.name. In Cassandra the DC name will be overridden by this value.\\nIt may generate some confusion as objects created for the DC will have a different name than the CasandraDatacenter object itself.\\nThis setting can create conflicts if multiple DCs coexist in the same namespace if metadata.name for a DC with no override is set to the same value as the override name of another DC.\\nUse cautiously.\",\n \"type\": \"string\"\n },\n \"datacenters\": {\n \"description\": \"Datacenters a list of the DCs in the cluster.\",\n \"items\": {\n \"properties\": {\n \"cdc\": {\n \"description\": \"CDC defines the desired state for CDC integrations. It can be used to feed mutation events from Cassandra into an Apache Pulsar cluster,\\nfrom where they can be expored to external systems.\",\n \"properties\": {\n \"cdcConcurrentProcessors\": {\n \"type\": \"integer\"\n },\n \"cdcPollIntervalM\": {\n \"type\": \"integer\"\n },\n \"cdcWorkingDir\": {\n \"type\": \"string\"\n },\n \"errorCommitLogReprocessEnabled\": {\n \"type\": \"boolean\"\n },\n \"pulsarAuthParams\": {\n \"type\": \"string\"\n },\n \"pulsarAuthPluginClassName\": {\n \"type\": \"string\"\n },\n \"pulsarBatchDelayInMs\": {\n \"type\": \"integer\"\n },\n \"pulsarKeyBasedBatcher\": {\n \"type\": \"boolean\"\n },\n \"pulsarMaxPendingMessages\": {\n \"type\": \"integer\"\n },\n \"pulsarMaxPendingMessagesAcrossPartitions\": {\n \"type\": \"integer\"\n },\n \"pulsarServiceUrl\": {\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"sslAllowInsecureConnection\": {\n \"type\": \"string\"\n },\n \"sslCipherSuites\": {\n \"type\": \"string\"\n },\n \"sslEnabledProtocols\": {\n \"type\": \"string\"\n },\n \"sslHostnameVerificationEnable\": {\n \"type\": \"string\"\n },\n \"sslKeystorePassword\": {\n \"type\": \"string\"\n },\n \"sslKeystorePath\": {\n \"type\": \"string\"\n },\n \"sslProvider\": {\n \"type\": \"string\"\n },\n \"sslTruststorePassword\": {\n \"type\": \"string\"\n },\n \"sslTruststorePath\": {\n \"type\": \"string\"\n },\n \"sslTruststoreType\": {\n \"type\": \"string\"\n },\n \"topicPrefix\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pulsarServiceUrl\"\n ],\n \"type\": \"object\"\n },\n \"config\": {\n \"description\": \"CassandraConfig contains configuration settings that are applied to cassandra.yaml, dse.yaml\\nand the various jvm*.options files.\",\n \"properties\": {\n \"cassandraYaml\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"dseYaml\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"jvmOptions\": {\n \"properties\": {\n \"additionalJvm11ServerOptions\": {\n \"description\": \"Jvm11ServerOptions are additional options that will be passed on to the jvm11-server-options file.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalJvm8ServerOptions\": {\n \"description\": \"Jvm8ServerOptions are additional options that will be passed on to the jvm8-server-options file.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalJvmServerOptions\": {\n \"description\": \"JvmServerOptions are additional options that will be passed on to the jvm-server-options file.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"additionalOptions\": {\n \"description\": \"Additional, arbitrary JVM options which are written into the cassandra-env.sh file.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"cassandra_available_processors\": {\n \"description\": \"Available CPU processors.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.available_processors.\",\n \"type\": \"integer\"\n },\n \"cassandra_disable_auth_caches_remote_configuration\": {\n \"description\": \"Disable remote configuration via JMX of auth caches.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.disable_auth_caches_remote_configuration.\",\n \"type\": \"boolean\"\n },\n \"cassandra_expiration_date_overflow_policy\": {\n \"description\": \"Defines how to handle INSERT requests with TTL exceeding the maximum supported expiration\\ndate.\\nPossible values include `REJECT`, `CAP`, `CAP_NOWARN`.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.expiration_date_overflow_policy.\",\n \"type\": \"string\"\n },\n \"cassandra_force_3_0_protocol_version\": {\n \"description\": \"Disabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -Dcassandra.force_3_0_protocol_version=true.\",\n \"type\": \"boolean\"\n },\n \"cassandra_force_default_indexing_page_size\": {\n \"description\": \"Disable dynamic calculation of the page size used when indexing an entire partition (during\\ninitial index build/rebuild).\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.force_default_indexing_page_size.\",\n \"type\": \"boolean\"\n },\n \"cassandra_max_hint_ttl_seconds\": {\n \"description\": \"Imposes an upper bound on hint lifetime below the normal min gc_grace_seconds.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.maxHintTTL.\",\n \"type\": \"integer\"\n },\n \"cassandra_metrics_reporter_config_file\": {\n \"description\": \"Enable pluggable metrics reporter.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.metricsReporterConfigFile.\\nTODO mountable directory\",\n \"type\": \"string\"\n },\n \"cassandra_ring_delay_ms\": {\n \"description\": \"Amount of time in milliseconds that a node waits before joining the ring.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.ring_delay_ms.\",\n \"type\": \"integer\"\n },\n \"cassandra_triggers_directory\": {\n \"description\": \"Default location for the trigger JARs.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.triggers_dir.\\nTODO mountable directory\",\n \"type\": \"string\"\n },\n \"cassandra_write_survey\": {\n \"description\": \"For testing new compaction and compression strategies.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.write_survey.\",\n \"type\": \"boolean\"\n },\n \"debug_disable_contended_annotations\": {\n \"description\": \"Disable honoring user code @Contended annotations.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:-RestrictContended.\",\n \"type\": \"boolean\"\n },\n \"debug_enable_flight_recorder\": {\n \"description\": \"Enable Flight Recorder (Use in production is subject to Oracle licensing).\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+FlightRecorder.\",\n \"type\": \"boolean\"\n },\n \"debug_listen_remote_debuggers\": {\n \"description\": \"Listen for JVM remote debuggers on port 1414.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1414\\\".\",\n \"type\": \"boolean\"\n },\n \"debug_log_compilation\": {\n \"description\": \"Make Cassandra JVM log internal method compilation (developers only).\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+LogCompilation.\",\n \"type\": \"boolean\"\n },\n \"debug_non_safepoints\": {\n \"description\": \"Whether the compiler should generate the necessary metadata for the parts of the code not at\\nsafe points as well. For use with Flight Recorder.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+DebugNonSafepoints.\",\n \"type\": \"boolean\"\n },\n \"debug_preserve_frame_pointer\": {\n \"description\": \"Preserve Frame Pointer.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+PreserveFramePointer.\",\n \"type\": \"boolean\"\n },\n \"debug_unlock_commercial_features\": {\n \"description\": \"Unlock commercial features.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+UnlockCommercialFeatures.\",\n \"type\": \"boolean\"\n },\n \"debug_unlock_diagnostic_vm_options\": {\n \"description\": \"Enabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+UnlockDiagnosticVMOptions.\",\n \"type\": \"boolean\"\n },\n \"gc\": {\n \"default\": \"G1GC\",\n \"description\": \"The name of the garbage collector to use. Depending on the Cassandra version, not all values\\nare supported: Cassandra 3.11 supports only G1GC and CMS; Cassandra 4.0 supports G1GC, ZGC,\\nShenandoah and Graal. This option will unlock the corresponding garbage collector with a\\ndefault configuration; to further tune the GC settings, use the additional JVM options field.\\nUse the special value Custom if you intend to use non-standard garbage collectors.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\",\n \"enum\": [\n \"G1GC\",\n \"CMS\",\n \"ZGC\",\n \"Shenandoah\",\n \"Graal\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"gc_cms_heap_size_young_generation\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Disabled by default. Can only be used when CMS garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -Xmn.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"gc_cms_initiating_occupancy_fraction\": {\n \"description\": \"Defaults to 75. Can only be used when CMS garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:CMSInitiatingOccupancyFraction.\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"gc_cms_max_tenuring_threshold\": {\n \"description\": \"Defaults to 1. Can only be used when CMS garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:MaxTenuringThreshold.\",\n \"type\": \"integer\"\n },\n \"gc_cms_survivor_ratio\": {\n \"description\": \"Defaults to 8. Can only be used when CMS garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:SurvivorRatio.\",\n \"type\": \"integer\"\n },\n \"gc_cms_wait_duration_ms\": {\n \"description\": \"Defaults to 10000. Can only be used when CMS garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:CMSWaitDuration.\",\n \"type\": \"integer\"\n },\n \"gc_g1_conc_threads\": {\n \"description\": \"Concurrent GC Threads. Can only be used when G1 garbage collector is used.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -XX:ConcGCThreads.\",\n \"type\": \"integer\"\n },\n \"gc_g1_initiating_heap_occupancy_percent\": {\n \"description\": \"Initiating Heap Occupancy Percentage. Can only be used when G1 garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -XX:InitiatingHeapOccupancyPercent.\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"gc_g1_max_gc_pause_ms\": {\n \"description\": \"G1GC Max GC Pause in milliseconds. Defaults to 500. Can only be used when G1 garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -XX:MaxGCPauseMillis.\",\n \"type\": \"integer\"\n },\n \"gc_g1_parallel_threads\": {\n \"description\": \"Parallel GC Threads. Can only be used when G1 garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -XX:ParallelGCThreads.\",\n \"type\": \"integer\"\n },\n \"gc_g1_rset_updating_pause_time_percent\": {\n \"description\": \"G1GC Updating Pause Time Percentage. Defaults to 5. Can only be used when G1 garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -XX:G1RSetUpdatingPauseTimePercent.\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"gc_print_application_stopped_time\": {\n \"description\": \"Print GC Application Stopped Time.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintGCApplicationStoppedTime.\",\n \"type\": \"boolean\"\n },\n \"gc_print_date_stamps\": {\n \"description\": \"Print GC Date Stamps. Disabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintGCDateStamps.\",\n \"type\": \"boolean\"\n },\n \"gc_print_details\": {\n \"description\": \"Print GC details.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintGCDetails.\",\n \"type\": \"boolean\"\n },\n \"gc_print_flss_statistics\": {\n \"description\": \"Print FLSS Statistics.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:PrintFLSStatistics=1.\",\n \"type\": \"boolean\"\n },\n \"gc_print_heap\": {\n \"description\": \"Print Heap at GC.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintHeapAtGC.\",\n \"type\": \"boolean\"\n },\n \"gc_print_log_file_size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Size of each log file.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:GCLogFileSize.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"gc_print_number_of_log_files\": {\n \"description\": \"Number of GC log files.\\nDisabled by default. Can only be used when the G1 garbage collector is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:NumberOfGCLogFiles.\",\n \"type\": \"integer\"\n },\n \"gc_print_promotion_failure\": {\n \"description\": \"Print promotion failure.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintPromotionFailure.\",\n \"type\": \"boolean\"\n },\n \"gc_print_tenuring_distribution\": {\n \"description\": \"Print tenuring distribution.\\nDefaults to false.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+PrintTenuringDistribution.\",\n \"type\": \"boolean\"\n },\n \"gc_print_use_log_file\": {\n \"description\": \"Whether to print GC logs to /var/log/cassandra/gc.log.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -Xloggc:/var/log/cassandra/gc.log.\",\n \"type\": \"boolean\"\n },\n \"gc_print_use_log_file_rotation\": {\n \"description\": \"Use GC Log File Rotation.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:+UseGCLogFileRotation.\",\n \"type\": \"boolean\"\n },\n \"heapNewGenSize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Deprecated. Use gc_cms_heap_size_young_generation instead.\\nValid for CMS garbage collector only + Cassandra 3.11.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"heapSize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Deprecated. Use heap_initial_size and heap_max_size instead. If this field is defined,\\nit applies to both max_heap_size and initial_heap_size.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"heap_initial_size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Disabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Xms.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"heap_max_size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Disabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Xmx.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"jdk_allow_attach_self\": {\n \"description\": \"Allow the current VM to attach to itself.\\nDefaults to true.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -Djdk.attach.allowAttachSelf=true.\",\n \"type\": \"boolean\"\n },\n \"jmx_connection_type\": {\n \"description\": \"Cass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nPossible values for 3.11 include `local-no-auth`, `remote-no-auth`, and `remote-dse-unified-auth`. Defaults to `local-no-auth`.\\nPossible values for 4.0 include `local-no-auth`, `remote-no-auth`. Defaults to `local-no-auth`.\",\n \"type\": \"string\"\n },\n \"jmx_port\": {\n \"description\": \"Disabled by default. Defaults to 7199.\\nTODO Make Reaper aware of the JMX port if a non-default port is used.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\",\n \"type\": \"integer\"\n },\n \"jmx_remote_ssl\": {\n \"description\": \"Cass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nDefaults to false.\\nValid only when JmxConnectionType is \\\"remote-no-auth\\\", \\\"remote-dse-unified-auth\\\".\",\n \"type\": \"boolean\"\n },\n \"jmx_remote_ssl_opts\": {\n \"description\": \"Remote SSL options.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\",\n \"type\": \"string\"\n },\n \"jmx_remote_ssl_require_client_auth\": {\n \"description\": \"Require Client Authentication for remote SSL? Defaults to false.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\",\n \"type\": \"boolean\"\n },\n \"netty_eventloop_maxpendingtasks\": {\n \"description\": \"Defaults to 65536.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dio.netty.eventLoop.maxPendingTasks.\",\n \"type\": \"integer\"\n },\n \"netty_try_reflection_set_accessible\": {\n \"description\": \"Netty setting `io.netty.tryReflectionSetAccessible`.\\nDefaults to true.\\nCass Config Builder: supported for Cassandra 4.0 in jvm11-server.options.\\nCorresponds to: -Dio.netty.tryReflectionSetAccessible=true.\",\n \"type\": \"boolean\"\n },\n \"nio_align_direct_memory\": {\n \"description\": \"Align direct memory allocations on page boundaries.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dsun.nio.PageAlignDirectMemory=true.\",\n \"type\": \"boolean\"\n },\n \"nio_maxcachedbuffersize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Defaults to 1048576.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Djdk.nio.maxCachedBufferSize.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"vm_always_pre_touch\": {\n \"description\": \"Ensure all memory is faulted and zeroed on startup.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+AlwaysPreTouch.\",\n \"type\": \"boolean\"\n },\n \"vm_crash_on_out_of_memory_error\": {\n \"description\": \"Disabled by default. Requires `exit_on_out_of_memory_error` to be disabled..\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+CrashOnOutOfMemoryError.\",\n \"type\": \"boolean\"\n },\n \"vm_disable_biased_locking\": {\n \"description\": \"Disable biased locking to avoid biased lock revocation pauses.\\nDisabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:-UseBiasedLocking.\\nNote: the Cass Config Builder option is named use_biased_locking, but setting it to true\\ndisables biased locking.\",\n \"type\": \"boolean\"\n },\n \"vm_disable_perf_shared_mem\": {\n \"description\": \"Disable hsperfdata mmap'ed file.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+PerfDisableSharedMem.\",\n \"type\": \"boolean\"\n },\n \"vm_enable_assertions\": {\n \"description\": \"Enable assertions.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -ea.\",\n \"type\": \"boolean\"\n },\n \"vm_enable_non_root_thread_priority\": {\n \"description\": \"Enable lowering thread priority without being root on linux.\\nSee CASSANDRA-1181 for details.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCorresponds to: -XX:ThreadPriorityPolicy=42.\",\n \"type\": \"boolean\"\n },\n \"vm_enable_thread_priorities\": {\n \"description\": \"Enable thread priorities.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+UseThreadPriorities.\",\n \"type\": \"boolean\"\n },\n \"vm_exit_on_out_of_memory_error\": {\n \"description\": \"Disabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+ExitOnOutOfMemoryError.\",\n \"type\": \"boolean\"\n },\n \"vm_guaranteed_safepoint_interval_ms\": {\n \"description\": \"Defaults to 300000 milliseconds.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:GuaranteedSafepointInterval.\",\n \"type\": \"integer\"\n },\n \"vm_heap_dump_on_out_of_memory_error\": {\n \"description\": \"Enabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+HeapDumpOnOutOfMemoryError.\",\n \"type\": \"boolean\"\n },\n \"vm_per_thread_stack_size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Per-thread stack size.\\nDefaults to 256Ki.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Xss.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"vm_prefer_ipv4\": {\n \"description\": \"Prefer binding to IPv4 network interfaces.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Djava.net.preferIPv4Stack=true.\",\n \"type\": \"boolean\"\n },\n \"vm_print_heap_histogram_on_out_of_memory_error\": {\n \"description\": \"Disabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -Dcassandra.printHeapHistogramOnOutOfMemoryError.\",\n \"type\": \"boolean\"\n },\n \"vm_resize_tlab\": {\n \"description\": \"Allow resizing of thread-local allocation blocks.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+ResizeTLAB.\",\n \"type\": \"boolean\"\n },\n \"vm_string_table_size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"The size of interned string table. Larger sizes are beneficial to gossip.\\nDefaults to 1000003.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:StringTableSize.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"vm_use_numa\": {\n \"description\": \"Enabled by default.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+UseNUMA.\",\n \"type\": \"boolean\"\n },\n \"vm_use_tlab\": {\n \"description\": \"Enable thread-local allocation blocks.\\nEnabled by default.\\nCass Config Builder: supported for Cassandra 3.11 in jvm.options.\\nCass Config Builder: supported for Cassandra 4.0 in jvm-server.options.\\nCorresponds to: -XX:+UseTLAB.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"containers\": {\n \"description\": \"Containers defines containers to be deployed in each Cassandra pod.\\nK8ssandra-operator and cass-operator will create their own containers, which can be referenced here to override specific settings,\\nsuch as mounts or resources request/limits for example.\\nExample:\\n containers:\\n - name: server-system-logger\\n - name: custom-container\\n image: busybox\\n - name: cassandra\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"datacenterName\": {\n \"description\": \"DatacenterName allows to override the name of the Cassandra datacenter. Kubernetes objects will be named after a sanitized version of it if set, and if not metadata.name. In Cassandra the DC name will be overridden by this value.\\nIt may generate some confusion as objects created for the DC will have a different name than the CasandraDatacenter object itself.\\nThis setting can create conflicts if multiple DCs coexist in the same namespace if metadata.name for a DC with no override is set to the same value as the override name of another DC.\\nUse cautiously.\",\n \"type\": \"string\"\n },\n \"dseWorkloads\": {\n \"properties\": {\n \"analyticsEnabled\": {\n \"type\": \"boolean\"\n },\n \"graphEnabled\": {\n \"type\": \"boolean\"\n },\n \"searchEnabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"extraVolumes\": {\n \"description\": \"Volumes defines additional volumes to be added to each Cassandra pod.\\nIf the volume uses a PersistentVolumeClaim, the PVC will be managed by the statefulset.\",\n \"properties\": {\n \"pvcs\": {\n \"description\": \"PVCs defines additional volumes to be added to each Cassandra pod and managed by the statefulset.\\nSuch volumes are automatically mounted by cass-operator into the cassandra containers.\",\n \"items\": {\n \"description\": \"AdditionalVolumes defines additional storage configurations\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Mount path into cassandra container\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the pvc / volume\",\n \"pattern\": \"[a-z0-9]([-a-z0-9]*[a-z0-9])?\",\n \"type\": \"string\"\n },\n \"pvcSpec\": {\n \"description\": \"PVCSpec is a persistent volume claim spec. Either this or VolumeSource is required.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeSource\": {\n \"description\": \"VolumeSource to mount the volume from (such as ConfigMap / Secret). This or PVCSpec is required.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"description\": \"Volumes defines volumes to be added to each Cassandra pod.\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"name of the volume.\\nMust be a DNS_LABEL and unique within the pod.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"initContainers\": {\n \"description\": \"InitContainers defines init-containers to be deployed in each Cassandra pod.\\nK8ssandra-operator and cass-operator will create their own init-containers, which can be referenced here to control ordering or override specific settings\\nsuch as mounts or resources request/limits for example.\\nOnly the name of the k8ssandra-operator/cass-operator init-containers is required, not their full definition which will be created by the operators.\\nExample:\\n initContainers:\\n - name: server-config-init\\n - name: custom-init-container\\n image: busybox\\n - name: medusa-restore\\nOtherwise init-containers referenced here will be injected in first position\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"jmxInitContainerImage\": {\n \"description\": \"Deprecated: JMX security is now based on CQL roles. We don't need an init container to configure JMX\\nauthentication anymore. The value of this field will be ignored.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"k8sContext\": {\n \"type\": \"string\"\n },\n \"managementApiAuth\": {\n \"description\": \"ManagementApiAuth defines the authentication settings for the management API in the Cassandra pods.\",\n \"properties\": {\n \"insecure\": {\n \"type\": \"object\"\n },\n \"manual\": {\n \"properties\": {\n \"clientSecretName\": {\n \"type\": \"string\"\n },\n \"serverSecretName\": {\n \"type\": \"string\"\n },\n \"skipSecretValidation\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"clientSecretName\",\n \"serverSecretName\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"commonAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"annotations that will be applied to all components\\ncreated by the CRD\",\n \"type\": \"object\"\n },\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"labels that will be applied to all components\\ncreated by the CRD\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n },\n \"pods\": {\n \"description\": \"labels/annotations for the pod components\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"services\": {\n \"description\": \"labels/annotations for all of the CassandraDatacenter service components\",\n \"properties\": {\n \"additionalSeedService\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"allPodsService\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"dcService\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nodePortService\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"seedService\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"mgmtAPIHeap\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"MgmtAPIHeap defines the amount of memory devoted to the management\\napi heap.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"networking\": {\n \"description\": \"Networking enables host networking and configures a NodePort ports.\",\n \"properties\": {\n \"hostNetwork\": {\n \"type\": \"boolean\"\n },\n \"nodePort\": {\n \"properties\": {\n \"internode\": {\n \"type\": \"integer\"\n },\n \"internodeSSL\": {\n \"type\": \"integer\"\n },\n \"native\": {\n \"type\": \"integer\"\n },\n \"nativeSSL\": {\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"perNodeConfigInitContainerImage\": {\n \"default\": \"mikefarah/yq:4\",\n \"description\": \"The image to use in each Cassandra pod for the (short-lived) init container that merges global and perNodeConfig\\nconfiguration. This is only useful when PerNodeConfigMapRef is set.\\nThe default is \\\"mikefarah/yq:4\\\".\",\n \"type\": \"string\"\n },\n \"perNodeConfigMapRef\": {\n \"description\": \"PerNodeConfigMapRef is a reference to a ConfigMap that contains per-node configuration for\\nthis DC. The ConfigMap is expected to have entries in the following form:\\n\\u003cpod-name\\u003e_\\u003cfile-name\\u003e.yaml, where \\u003cpod-name\\u003e is the name of the pod and \\u003cfile-name\\u003e is the\\nname of a configuration file (typically, cassandra.yaml). The value of the entry is expected\\nto be a YAML fragment that contains the per-node configuration for each pod. When the pod is\\nstarted, the per-node ConfigMap is mounted and the contents of each entry corresponding to\\nthe pod are merged into their respective configuration files.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"podSecurityContext\": {\n \"description\": \"PodSecurityContext defines the security context for the Cassandra pods.\",\n \"properties\": {\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"racks\": {\n \"description\": \"Racks is a list of named racks. Note that racks are used to create node affinity. //\",\n \"items\": {\n \"description\": \"Rack ...\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity rules to set for this rack only. Merged with values from PodTemplateSpec Affinity as well as NodeAffinityLabels. If you wish to override all the default\\nPodAntiAffinity rules, set allowMultipleWorkers to true, otherwise defaults are applied and then these Affinity settings are merged.\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The rack name\",\n \"minLength\": 2,\n \"type\": \"string\"\n },\n \"nodeAffinityLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeAffinityLabels to pin the rack, using node affinity\",\n \"type\": \"object\"\n },\n \"zone\": {\n \"description\": \"Deprecated. Use nodeAffinityLabels instead. DeprecatedZone name to pin the rack, using node affinity\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"resources\": {\n \"description\": \"Resources is the cpu and memory resources for the cassandra container.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serverImage\": {\n \"description\": \"ServerImage is the image for the cassandra container. Note that this should be a\\nmanagement-api image. If left empty the operator will choose a default image based\\non ServerVersion.\",\n \"type\": \"string\"\n },\n \"serverVersion\": {\n \"description\": \"ServerVersion is the Cassandra or DSE version. The following versions are supported:\\n- Cassandra: 3.11.X, 4.X.X and 5.X.X\\n- DSE: 6.8.X, 7.x.x\\n- HCD: 1.0.x\",\n \"pattern\": \"(\\\\d+\\\\.\\\\d+\\\\.\\\\d+)\",\n \"type\": \"string\"\n },\n \"serviceAccount\": {\n \"description\": \"The k8s service account to use for the Cassandra pods\",\n \"type\": \"string\"\n },\n \"size\": {\n \"description\": \"Size is the number Cassandra pods to deploy in this datacenter.\\nThis number does not include Stargate instances.\",\n \"format\": \"int32\",\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"softPodAntiAffinity\": {\n \"description\": \"SoftPodAntiAffinity sets whether multiple Cassandra instances can be scheduled on the same node.\\nThis should normally be false to ensure cluster resilience but may be set true for test/dev scenarios to minimise\\nthe number of nodes required.\",\n \"type\": \"boolean\"\n },\n \"stargate\": {\n \"description\": \"Stargate defines the desired deployment characteristics for Stargate in this datacenter. Leave nil to skip\\ndeploying Stargate in this datacenter.\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity is the affinity to apply to all the Stargate pods.\\nLeave nil to let the controller reuse the same affinity rules used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"allowStargateOnDataNodes\": {\n \"default\": false,\n \"description\": \"AllowStargateOnDataNodes allows Stargate pods to be scheduled on a worker node already hosting data pods for this\\ndatacenter. The default is false, which means that Stargate pods will be scheduled on separate worker nodes.\\nNote: if the datacenter pods have HostNetwork:true, then the Stargate pods will inherit of it, in which case it\\nis possible that Stargate nodes won't be allowed to sit on data nodes even if this property is set to true,\\nbecause of port conflicts on the same IP address.\",\n \"type\": \"boolean\"\n },\n \"authOptions\": {\n \"description\": \"Authentication options.\",\n \"properties\": {\n \"apiAuthMethod\": {\n \"default\": \"Table\",\n \"description\": \"The method to use for authenticating requests to the Stargate APIs. Stargate currently has\\ntwo authentication / authorization methods:\\n- Table: table-based;\\n- JWT: JSON web token (JWT)-based.\\nThe methods are mutually exclusive. The default method is Table.\",\n \"enum\": [\n \"Table\",\n \"JWT\"\n ],\n \"type\": \"string\"\n },\n \"providerUrl\": {\n \"description\": \"Required when using JWT authentication method, ignored otherwise.\",\n \"type\": \"string\"\n },\n \"tokenTtlSeconds\": {\n \"description\": \"The time-to-live in seconds of an API authentication token. Valid only for the Table\\nauthentication method. By default, the token persists for 30 minutes with a sliding window.\\nEach use of the token to authenticate resets the 30-minute window. A token created and used\\nafter 29 minutes will authenticate a request, but if 31 minutes passes before use, the token\\nwill no longer exist.\\nDefault is 1800 seconds (30 minutes).\",\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"cassandraConfigMapRef\": {\n \"description\": \"CassandraConfigMapRef is a reference to a ConfigMap that holds Cassandra configuration.\\nThe map should have a key named cassandra_yaml.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"containerImage\": {\n \"default\": {\n \"repository\": \"stargateio\",\n \"tag\": \"v1.0.77\"\n },\n \"description\": \"ContainerImage is the image characteristics to use for Stargate containers. Leave nil\\nto use a default image.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"heapSize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"default\": \"256Mi\",\n \"description\": \"HeapSize sets the JVM heap size to use for Stargate. If no Resources are specified, this\\nvalue will also be used to set a default memory request and limit for the Stargate pods:\\nthese will be set to HeapSize x2 and x4, respectively.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"livenessProbe\": {\n \"description\": \"LivenessProbe sets the Stargate liveness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"description\": \"labels and annotations for Stargate resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"labels/annotations that will be applied to all components\\ncreated by the CRD\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"pods\": {\n \"description\": \"labels/annotations for the pod components\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"description\": \"labels/annotations for the service component\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is an optional map of label keys and values to restrict the scheduling of Stargate nodes to workers\\nwith matching labels.\\nLeave nil to let the controller reuse the same node selectors used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector\",\n \"type\": \"object\"\n },\n \"racks\": {\n \"description\": \"Racks allow customizing Stargate characteristics for specific racks in the datacenter.\",\n \"items\": {\n \"description\": \"StargateRackTemplate defines custom rules for Stargate pods in a given rack.\\nThese rules will be merged with rules defined at datacenter level in a StargateDatacenterTemplate; rack-level rules\\nhave precedence over datacenter-level ones.\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity is the affinity to apply to all the Stargate pods.\\nLeave nil to let the controller reuse the same affinity rules used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"allowStargateOnDataNodes\": {\n \"default\": false,\n \"description\": \"AllowStargateOnDataNodes allows Stargate pods to be scheduled on a worker node already hosting data pods for this\\ndatacenter. The default is false, which means that Stargate pods will be scheduled on separate worker nodes.\\nNote: if the datacenter pods have HostNetwork:true, then the Stargate pods will inherit of it, in which case it\\nis possible that Stargate nodes won't be allowed to sit on data nodes even if this property is set to true,\\nbecause of port conflicts on the same IP address.\",\n \"type\": \"boolean\"\n },\n \"authOptions\": {\n \"description\": \"Authentication options.\",\n \"properties\": {\n \"apiAuthMethod\": {\n \"default\": \"Table\",\n \"description\": \"The method to use for authenticating requests to the Stargate APIs. Stargate currently has\\ntwo authentication / authorization methods:\\n- Table: table-based;\\n- JWT: JSON web token (JWT)-based.\\nThe methods are mutually exclusive. The default method is Table.\",\n \"enum\": [\n \"Table\",\n \"JWT\"\n ],\n \"type\": \"string\"\n },\n \"providerUrl\": {\n \"description\": \"Required when using JWT authentication method, ignored otherwise.\",\n \"type\": \"string\"\n },\n \"tokenTtlSeconds\": {\n \"description\": \"The time-to-live in seconds of an API authentication token. Valid only for the Table\\nauthentication method. By default, the token persists for 30 minutes with a sliding window.\\nEach use of the token to authenticate resets the 30-minute window. A token created and used\\nafter 29 minutes will authenticate a request, but if 31 minutes passes before use, the token\\nwill no longer exist.\\nDefault is 1800 seconds (30 minutes).\",\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"cassandraConfigMapRef\": {\n \"description\": \"CassandraConfigMapRef is a reference to a ConfigMap that holds Cassandra configuration.\\nThe map should have a key named cassandra_yaml.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"containerImage\": {\n \"default\": {\n \"repository\": \"stargateio\",\n \"tag\": \"v1.0.77\"\n },\n \"description\": \"ContainerImage is the image characteristics to use for Stargate containers. Leave nil\\nto use a default image.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"heapSize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"default\": \"256Mi\",\n \"description\": \"HeapSize sets the JVM heap size to use for Stargate. If no Resources are specified, this\\nvalue will also be used to set a default memory request and limit for the Stargate pods:\\nthese will be set to HeapSize x2 and x4, respectively.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"livenessProbe\": {\n \"description\": \"LivenessProbe sets the Stargate liveness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"description\": \"labels and annotations for Stargate resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"labels/annotations that will be applied to all components\\ncreated by the CRD\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"pods\": {\n \"description\": \"labels/annotations for the pod components\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"description\": \"labels/annotations for the service component\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name is the rack name. It must correspond to an existing rack name in the CassandraDatacenter resource where\\nStargate is being deployed, otherwise it will be ignored.\",\n \"minLength\": 2,\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is an optional map of label keys and values to restrict the scheduling of Stargate nodes to workers\\nwith matching labels.\\nLeave nil to let the controller reuse the same node selectors used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector\",\n \"type\": \"object\"\n },\n \"readinessProbe\": {\n \"description\": \"ReadinessProbe sets the Stargate readiness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Resources is the Kubernetes resource requests and limits to apply, per Stargate pod. Leave\\nnil to use defaults.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"secretsProvider\": {\n \"default\": \"internal\",\n \"description\": \"SecretsProvider defines whether the secrets used for credentials and certs will be backed\\nby an external secret backend. This moves the responsibility of generating and storing\\nsecrets from the operators to the user and will rely on a mutating webhook to inject\\nthe secrets into the necessary resources\",\n \"enum\": [\n \"internal\",\n \"external\"\n ],\n \"type\": \"string\"\n },\n \"serviceAccount\": {\n \"default\": \"default\",\n \"description\": \"ServiceAccount is the service account name to use for Stargate pods.\",\n \"type\": \"string\"\n },\n \"telemetry\": {\n \"description\": \"Telemetry defines the desired telemetry integrations to deploy targeting the Stargate pods for all DCs in this cluster\\n(unless overridden by DC specific settings)\",\n \"properties\": {\n \"cassandra\": {\n \"properties\": {\n \"endpoint\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"relabels\": {\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion.\\nIt defines `\\u003cmetric_relabel_configs\\u003e`-section of Prometheus configuration.\\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"mcac\": {\n \"properties\": {\n \"enabled\": {\n \"description\": \"enabled sets whether MCAC (legacy metrics endpoint) is enabled.\\nThis is considered true by default.\",\n \"type\": \"boolean\"\n },\n \"metricFilters\": {\n \"description\": \"MetricFilters allows passing filters to MCAC in order to reduce the amount of extracted metrics.\\nNot setting this field will result in the default filters being used:\\n- \\\"deny:org.apache.cassandra.metrics.Table\\\"\\n- \\\"deny:org.apache.cassandra.metrics.table\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_ss_table_count\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.LiveSSTableCount\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_disk_space_used\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.LiveDiskSpaceUsed\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Pending\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Memtable\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Compaction\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.read\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.write\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.range\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.coordinator\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.dropped_mutations\\\"\\nSetting it to an empty list will result in all metrics being extracted.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"prometheus\": {\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"CommonLabels are applied to all serviceMonitors created.\",\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enable the creation of Prometheus serviceMonitors for this resource (Cassandra or Stargate).\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"vector\": {\n \"properties\": {\n \"components\": {\n \"properties\": {\n \"sinks\": {\n \"description\": \"Sinks is the list of sinks to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the sink.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the sink.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the sink.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sources\": {\n \"description\": \"Sources is the list of sources to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the source.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of the source.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"transforms\": {\n \"description\": \"Transforms is the list of transforms to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the transform.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the transform.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the transform.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enabled enables the Vector agent for this resource (Cassandra, Reaper or Stargate).\\nEnabling the vector agent will inject a sidecar container into the pod.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image is the name of the Vector image to use. If not set, the default image will be used.\\nkube:default=\\\"timberio/vector:0.26.0-alpine\\\"\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resources is the resource requirements for the Vector agent.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrapeInterval\": {\n \"description\": \"ScrapeInterval is the interval at which the Vector agent will scrape the metrics endpoint.\\nUse values like 30s, 1m, 5m.\\nkube:default=30s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations are tolerations to apply to the Stargate pods.\\nLeave nil to let the controller reuse the same tolerations used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readinessProbe\": {\n \"description\": \"ReadinessProbe sets the Stargate readiness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Resources is the Kubernetes resource requests and limits to apply, per Stargate pod. Leave\\nnil to use defaults.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"secretsProvider\": {\n \"default\": \"internal\",\n \"description\": \"SecretsProvider defines whether the secrets used for credentials and certs will be backed\\nby an external secret backend. This moves the responsibility of generating and storing\\nsecrets from the operators to the user and will rely on a mutating webhook to inject\\nthe secrets into the necessary resources\",\n \"enum\": [\n \"internal\",\n \"external\"\n ],\n \"type\": \"string\"\n },\n \"serviceAccount\": {\n \"default\": \"default\",\n \"description\": \"ServiceAccount is the service account name to use for Stargate pods.\",\n \"type\": \"string\"\n },\n \"size\": {\n \"default\": 1,\n \"description\": \"Size is the number of Stargate instances to deploy in each datacenter. They will be spread evenly across racks.\",\n \"format\": \"int32\",\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"telemetry\": {\n \"description\": \"Telemetry defines the desired telemetry integrations to deploy targeting the Stargate pods for all DCs in this cluster\\n(unless overridden by DC specific settings)\",\n \"properties\": {\n \"cassandra\": {\n \"properties\": {\n \"endpoint\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"relabels\": {\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion.\\nIt defines `\\u003cmetric_relabel_configs\\u003e`-section of Prometheus configuration.\\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"mcac\": {\n \"properties\": {\n \"enabled\": {\n \"description\": \"enabled sets whether MCAC (legacy metrics endpoint) is enabled.\\nThis is considered true by default.\",\n \"type\": \"boolean\"\n },\n \"metricFilters\": {\n \"description\": \"MetricFilters allows passing filters to MCAC in order to reduce the amount of extracted metrics.\\nNot setting this field will result in the default filters being used:\\n- \\\"deny:org.apache.cassandra.metrics.Table\\\"\\n- \\\"deny:org.apache.cassandra.metrics.table\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_ss_table_count\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.LiveSSTableCount\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_disk_space_used\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.LiveDiskSpaceUsed\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Pending\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Memtable\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Compaction\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.read\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.write\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.range\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.coordinator\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.dropped_mutations\\\"\\nSetting it to an empty list will result in all metrics being extracted.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"prometheus\": {\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"CommonLabels are applied to all serviceMonitors created.\",\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enable the creation of Prometheus serviceMonitors for this resource (Cassandra or Stargate).\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"vector\": {\n \"properties\": {\n \"components\": {\n \"properties\": {\n \"sinks\": {\n \"description\": \"Sinks is the list of sinks to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the sink.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the sink.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the sink.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sources\": {\n \"description\": \"Sources is the list of sources to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the source.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of the source.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"transforms\": {\n \"description\": \"Transforms is the list of transforms to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the transform.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the transform.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the transform.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enabled enables the Vector agent for this resource (Cassandra, Reaper or Stargate).\\nEnabling the vector agent will inject a sidecar container into the pod.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image is the name of the Vector image to use. If not set, the default image will be used.\\nkube:default=\\\"timberio/vector:0.26.0-alpine\\\"\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resources is the resource requirements for the Vector agent.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrapeInterval\": {\n \"description\": \"ScrapeInterval is the interval at which the Vector agent will scrape the metrics endpoint.\\nUse values like 30s, 1m, 5m.\\nkube:default=30s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations are tolerations to apply to the Stargate pods.\\nLeave nil to let the controller reuse the same tolerations used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"size\"\n ],\n \"type\": \"object\"\n },\n \"stopped\": {\n \"default\": false,\n \"description\": \"Stopped means that the datacenter will be stopped. Use this for maintenance or for cost saving. A stopped\\nCassandraDatacenter will have no running server pods, like using \\\"stop\\\" with traditional System V init scripts.\\nOther Kubernetes resources will be left intact, and volumes will re-attach when the CassandraDatacenter\\nworkload is resumed.\",\n \"type\": \"boolean\"\n },\n \"storageConfig\": {\n \"description\": \"StorageConfig is the persistent storage requirements for each Cassandra pod. This\\nincludes everything under /var/lib/cassandra, namely the commit log and data\\ndirectories.\",\n \"properties\": {\n \"additionalVolumes\": {\n \"items\": {\n \"description\": \"AdditionalVolumes defines additional storage configurations\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Mount path into cassandra container\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the pvc / volume\",\n \"pattern\": \"[a-z0-9]([-a-z0-9]*[a-z0-9])?\",\n \"type\": \"string\"\n },\n \"pvcSpec\": {\n \"description\": \"PVCSpec is a persistent volume claim spec. Either this or VolumeSource is required.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeSource\": {\n \"description\": \"VolumeSource to mount the volume from (such as ConfigMap / Secret). This or PVCSpec is required.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"cassandraDataVolumeClaimSpec\": {\n \"description\": \"PersistentVolumeClaimSpec describes the common attributes of storage devices\\nand allows a Source for provider-specific attributes\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"telemetry\": {\n \"description\": \"Telemetry defines the desired state for telemetry resources in this datacenter.\\nIf telemetry configurations are defined, telemetry resources will be deployed to integrate with\\na user-provided monitoring solution (at present, only support for Prometheus is available).\",\n \"properties\": {\n \"cassandra\": {\n \"properties\": {\n \"endpoint\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"relabels\": {\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion.\\nIt defines `\\u003cmetric_relabel_configs\\u003e`-section of Prometheus configuration.\\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"mcac\": {\n \"properties\": {\n \"enabled\": {\n \"description\": \"enabled sets whether MCAC (legacy metrics endpoint) is enabled.\\nThis is considered true by default.\",\n \"type\": \"boolean\"\n },\n \"metricFilters\": {\n \"description\": \"MetricFilters allows passing filters to MCAC in order to reduce the amount of extracted metrics.\\nNot setting this field will result in the default filters being used:\\n- \\\"deny:org.apache.cassandra.metrics.Table\\\"\\n- \\\"deny:org.apache.cassandra.metrics.table\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_ss_table_count\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.LiveSSTableCount\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_disk_space_used\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.LiveDiskSpaceUsed\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Pending\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Memtable\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Compaction\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.read\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.write\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.range\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.coordinator\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.dropped_mutations\\\"\\nSetting it to an empty list will result in all metrics being extracted.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"prometheus\": {\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"CommonLabels are applied to all serviceMonitors created.\",\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enable the creation of Prometheus serviceMonitors for this resource (Cassandra or Stargate).\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"vector\": {\n \"properties\": {\n \"components\": {\n \"properties\": {\n \"sinks\": {\n \"description\": \"Sinks is the list of sinks to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the sink.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the sink.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the sink.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sources\": {\n \"description\": \"Sources is the list of sources to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the source.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of the source.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"transforms\": {\n \"description\": \"Transforms is the list of transforms to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the transform.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the transform.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the transform.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enabled enables the Vector agent for this resource (Cassandra, Reaper or Stargate).\\nEnabling the vector agent will inject a sidecar container into the pod.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image is the name of the Vector image to use. If not set, the default image will be used.\\nkube:default=\\\"timberio/vector:0.26.0-alpine\\\"\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resources is the resource requirements for the Vector agent.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrapeInterval\": {\n \"description\": \"ScrapeInterval is the interval at which the Vector agent will scrape the metrics endpoint.\\nUse values like 30s, 1m, 5m.\\nkube:default=30s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations applied to every Cassandra pod.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"size\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"dseWorkloads\": {\n \"properties\": {\n \"analyticsEnabled\": {\n \"type\": \"boolean\"\n },\n \"graphEnabled\": {\n \"type\": \"boolean\"\n },\n \"searchEnabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"extraVolumes\": {\n \"description\": \"Volumes defines additional volumes to be added to each Cassandra pod.\\nIf the volume uses a PersistentVolumeClaim, the PVC will be managed by the statefulset.\",\n \"properties\": {\n \"pvcs\": {\n \"description\": \"PVCs defines additional volumes to be added to each Cassandra pod and managed by the statefulset.\\nSuch volumes are automatically mounted by cass-operator into the cassandra containers.\",\n \"items\": {\n \"description\": \"AdditionalVolumes defines additional storage configurations\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Mount path into cassandra container\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the pvc / volume\",\n \"pattern\": \"[a-z0-9]([-a-z0-9]*[a-z0-9])?\",\n \"type\": \"string\"\n },\n \"pvcSpec\": {\n \"description\": \"PVCSpec is a persistent volume claim spec. Either this or VolumeSource is required.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeSource\": {\n \"description\": \"VolumeSource to mount the volume from (such as ConfigMap / Secret). This or PVCSpec is required.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"description\": \"Volumes defines volumes to be added to each Cassandra pod.\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"name of the volume.\\nMust be a DNS_LABEL and unique within the pod.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"initContainers\": {\n \"description\": \"InitContainers defines init-containers to be deployed in each Cassandra pod.\\nK8ssandra-operator and cass-operator will create their own init-containers, which can be referenced here to control ordering or override specific settings\\nsuch as mounts or resources request/limits for example.\\nOnly the name of the k8ssandra-operator/cass-operator init-containers is required, not their full definition which will be created by the operators.\\nExample:\\n initContainers:\\n - name: server-config-init\\n - name: custom-init-container\\n image: busybox\\n - name: medusa-restore\\nOtherwise init-containers referenced here will be injected in first position\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"jmxInitContainerImage\": {\n \"description\": \"Deprecated: JMX security is now based on CQL roles. We don't need an init container to configure JMX\\nauthentication anymore. The value of this field will be ignored.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"managementApiAuth\": {\n \"description\": \"ManagementApiAuth defines the authentication settings for the management API in the Cassandra pods.\",\n \"properties\": {\n \"insecure\": {\n \"type\": \"object\"\n },\n \"manual\": {\n \"properties\": {\n \"clientSecretName\": {\n \"type\": \"string\"\n },\n \"serverSecretName\": {\n \"type\": \"string\"\n },\n \"skipSecretValidation\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"clientSecretName\",\n \"serverSecretName\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"description\": \"Struct to hold labels and annotations for the top-level Cassandra cluster definition.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"commonAnnotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"annotations that will be applied to all components\\ncreated by the CRD\",\n \"type\": \"object\"\n },\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"labels that will be applied to all components\\ncreated by the CRD\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"pods\": {\n \"description\": \"labels/annotations for the pod components\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"services\": {\n \"description\": \"labels/annotations for all of the CassandraDatacenter service components\",\n \"properties\": {\n \"additionalSeedService\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"allPodsService\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"dcService\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nodePortService\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"seedService\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"mgmtAPIHeap\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"MgmtAPIHeap defines the amount of memory devoted to the management\\napi heap.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"networking\": {\n \"description\": \"Networking enables host networking and configures a NodePort ports.\",\n \"properties\": {\n \"hostNetwork\": {\n \"type\": \"boolean\"\n },\n \"nodePort\": {\n \"properties\": {\n \"internode\": {\n \"type\": \"integer\"\n },\n \"internodeSSL\": {\n \"type\": \"integer\"\n },\n \"native\": {\n \"type\": \"integer\"\n },\n \"nativeSSL\": {\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"perNodeConfigInitContainerImage\": {\n \"default\": \"mikefarah/yq:4\",\n \"description\": \"The image to use in each Cassandra pod for the (short-lived) init container that merges global and perNodeConfig\\nconfiguration. This is only useful when PerNodeConfigMapRef is set.\\nThe default is \\\"mikefarah/yq:4\\\".\",\n \"type\": \"string\"\n },\n \"podSecurityContext\": {\n \"description\": \"PodSecurityContext defines the security context for the Cassandra pods.\",\n \"properties\": {\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"racks\": {\n \"description\": \"Racks is a list of named racks. Note that racks are used to create node affinity. //\",\n \"items\": {\n \"description\": \"Rack ...\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity rules to set for this rack only. Merged with values from PodTemplateSpec Affinity as well as NodeAffinityLabels. If you wish to override all the default\\nPodAntiAffinity rules, set allowMultipleWorkers to true, otherwise defaults are applied and then these Affinity settings are merged.\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The rack name\",\n \"minLength\": 2,\n \"type\": \"string\"\n },\n \"nodeAffinityLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeAffinityLabels to pin the rack, using node affinity\",\n \"type\": \"object\"\n },\n \"zone\": {\n \"description\": \"Deprecated. Use nodeAffinityLabels instead. DeprecatedZone name to pin the rack, using node affinity\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"resources\": {\n \"description\": \"Resources is the cpu and memory resources for the cassandra container.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serverEncryptionStores\": {\n \"description\": \"Internode encryption stores which are used by Cassandra and Stargate.\",\n \"properties\": {\n \"keystorePasswordSecretRef\": {\n \"description\": \"ref to the secret that contains the keystore password if password stored in different secret than keystoreSecretRef\\nif key isn't specified explicitly, \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"keystoreSecretRef\": {\n \"description\": \"ref to the secret that contains the keystore and optionally its password (which can also be specified through\\nthe keystorePasswordSecretRef field)\\nif keys are not specified, \\\"keystore\\\" entry and a \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"truststorePasswordSecretRef\": {\n \"description\": \"ref to the secret that contains the truststore password if password stored in different secret than keystoreSecretRef\\nif key isn't specified explicitly, \\\"truststore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"truststoreSecretRef\": {\n \"description\": \"ref to the secret that contains the truststore and optionally its password (which can also be specified through\\nthe truststorePasswordSecretRef field)\\nif keys are not specified explicitly, \\\"keystore\\\" entry and a \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"keystoreSecretRef\",\n \"truststoreSecretRef\"\n ],\n \"type\": \"object\"\n },\n \"serverImage\": {\n \"description\": \"ServerImage is the image for the cassandra container. Note that this should be a\\nmanagement-api image. If left empty the operator will choose a default image based\\non ServerVersion.\",\n \"type\": \"string\"\n },\n \"serverType\": {\n \"default\": \"cassandra\",\n \"description\": \"Server type: \\\"cassandra\\\" or \\\"dse\\\".\",\n \"enum\": [\n \"cassandra\",\n \"dse\",\n \"hcd\"\n ],\n \"type\": \"string\"\n },\n \"serverVersion\": {\n \"description\": \"ServerVersion is the Cassandra or DSE version. The following versions are supported:\\n- Cassandra: 3.11.X, 4.X.X and 5.X.X\\n- DSE: 6.8.X, 7.x.x\\n- HCD: 1.0.x\",\n \"pattern\": \"(\\\\d+\\\\.\\\\d+\\\\.\\\\d+)\",\n \"type\": \"string\"\n },\n \"serviceAccount\": {\n \"description\": \"The k8s service account to use for the Cassandra pods\",\n \"type\": \"string\"\n },\n \"softPodAntiAffinity\": {\n \"description\": \"SoftPodAntiAffinity sets whether multiple Cassandra instances can be scheduled on the same node.\\nThis should normally be false to ensure cluster resilience but may be set true for test/dev scenarios to minimise\\nthe number of nodes required.\",\n \"type\": \"boolean\"\n },\n \"storageConfig\": {\n \"description\": \"StorageConfig is the persistent storage requirements for each Cassandra pod. This\\nincludes everything under /var/lib/cassandra, namely the commit log and data\\ndirectories.\",\n \"properties\": {\n \"additionalVolumes\": {\n \"items\": {\n \"description\": \"AdditionalVolumes defines additional storage configurations\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Mount path into cassandra container\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the pvc / volume\",\n \"pattern\": \"[a-z0-9]([-a-z0-9]*[a-z0-9])?\",\n \"type\": \"string\"\n },\n \"pvcSpec\": {\n \"description\": \"PVCSpec is a persistent volume claim spec. Either this or VolumeSource is required.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeSource\": {\n \"description\": \"VolumeSource to mount the volume from (such as ConfigMap / Secret). This or PVCSpec is required.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"cassandraDataVolumeClaimSpec\": {\n \"description\": \"PersistentVolumeClaimSpec describes the common attributes of storage devices\\nand allows a Source for provider-specific attributes\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"superuserSecretRef\": {\n \"description\": \"The reference to the superuser secret to use for Cassandra. If unspecified, a default secret will be generated\\nwith a random password; the generated secret name will be \\\"\\u003ccluster_name\\u003e-superuser\\\" where \\u003ccluster_name\\u003e is the\\nK8ssandraCluster CRD name.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"telemetry\": {\n \"description\": \"Telemetry defines the desired state for telemetry resources in this datacenter.\\nIf telemetry configurations are defined, telemetry resources will be deployed to integrate with\\na user-provided monitoring solution (at present, only support for Prometheus is available).\",\n \"properties\": {\n \"cassandra\": {\n \"properties\": {\n \"endpoint\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"relabels\": {\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion.\\nIt defines `\\u003cmetric_relabel_configs\\u003e`-section of Prometheus configuration.\\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"mcac\": {\n \"properties\": {\n \"enabled\": {\n \"description\": \"enabled sets whether MCAC (legacy metrics endpoint) is enabled.\\nThis is considered true by default.\",\n \"type\": \"boolean\"\n },\n \"metricFilters\": {\n \"description\": \"MetricFilters allows passing filters to MCAC in order to reduce the amount of extracted metrics.\\nNot setting this field will result in the default filters being used:\\n- \\\"deny:org.apache.cassandra.metrics.Table\\\"\\n- \\\"deny:org.apache.cassandra.metrics.table\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_ss_table_count\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.LiveSSTableCount\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_disk_space_used\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.LiveDiskSpaceUsed\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Pending\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Memtable\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Compaction\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.read\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.write\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.range\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.coordinator\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.dropped_mutations\\\"\\nSetting it to an empty list will result in all metrics being extracted.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"prometheus\": {\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"CommonLabels are applied to all serviceMonitors created.\",\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enable the creation of Prometheus serviceMonitors for this resource (Cassandra or Stargate).\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"vector\": {\n \"properties\": {\n \"components\": {\n \"properties\": {\n \"sinks\": {\n \"description\": \"Sinks is the list of sinks to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the sink.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the sink.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the sink.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sources\": {\n \"description\": \"Sources is the list of sources to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the source.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of the source.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"transforms\": {\n \"description\": \"Transforms is the list of transforms to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the transform.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the transform.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the transform.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enabled enables the Vector agent for this resource (Cassandra, Reaper or Stargate).\\nEnabling the vector agent will inject a sidecar container into the pod.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image is the name of the Vector image to use. If not set, the default image will be used.\\nkube:default=\\\"timberio/vector:0.26.0-alpine\\\"\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resources is the resource requirements for the Vector agent.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrapeInterval\": {\n \"description\": \"ScrapeInterval is the interval at which the Vector agent will scrape the metrics endpoint.\\nUse values like 30s, 1m, 5m.\\nkube:default=30s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations applied to every Cassandra pod.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"externalDatacenters\": {\n \"description\": \"During a migration the operator should alter keyspaces replication settings including the following external DCs.\\nThis avoids removing replicas from datacenters which are outside of the operator scope (not referenced in the CR).\\nReplication settings changes will only apply to system_* keyspaces as well as reaper_db and data_endpoint_auth (Stargate).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"medusa\": {\n \"description\": \"Medusa defines the desired deployment characteristics for Medusa in this K8ssandraCluster.\\nIf this is non-nil, Medusa will be deployed in every Cassandra pod in this K8ssandraCluster.\",\n \"properties\": {\n \"cassandraUserSecretRef\": {\n \"description\": \"Defines the username and password that Medusa will use to authenticate CQL connections to Cassandra clusters.\\nThese credentials will be automatically turned into CQL roles by cass-operator when bootstrapping the datacenter,\\nthen passed to the Medusa instances, so that it can authenticate against nodes in the datacenter using CQL.\\nThe secret must be in the same namespace as Cassandra and must contain two keys: \\\"username\\\" and \\\"password\\\".\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"certificatesSecretRef\": {\n \"description\": \"Certificates for Medusa if client encryption is enabled in Cassandra.\\nThe secret must be in the same namespace as Cassandra and must contain three keys: \\\"rootca.crt\\\", \\\"client.crt_signed\\\" and \\\"client.key\\\".\\nSee https://docs.datastax.com/en/developer/python-driver/latest/security/ for more information on the required files.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"containerImage\": {\n \"description\": \"MedusaContainerImage is the image characteristics to use for Medusa containers. Leave nil\\nto use a default image.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"containerResources\": {\n \"description\": \"Medusa main container resources.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"initContainerResources\": {\n \"description\": \"medusa-restore init container resources.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Define the liveness probe settings to use for the Medusa containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"medusaConfigurationRef\": {\n \"description\": \"MedusaConfigurationRef points to an existing MedusaConfiguration object.\\nThe purpose is to allow shared default settings across several clusters.\\nStorageProperties override the settings from MedusaConfiguration object to allow customization.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"API version of the referent.\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"If referring to a piece of an object instead of an entire object, this string\\nshould contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\\nFor example, if the object reference is to a container within a pod, this would take on a value like:\\n\\\"spec.containers{name}\\\" (where \\\"name\\\" refers to the name of the container that triggered\\nthe event) or if no container name is specified \\\"spec.containers[2]\\\" (container with\\nindex 2 in this pod). This syntax is chosen only to have some well-defined way of\\nreferencing a part of an object.\\nTODO: this design is not final and this field is subject to change in the future.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind of the referent.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/\",\n \"type\": \"string\"\n },\n \"resourceVersion\": {\n \"description\": \"Specific resourceVersion to which this reference is made, if any.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency\",\n \"type\": \"string\"\n },\n \"uid\": {\n \"description\": \"UID of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"purgeBackups\": {\n \"default\": true,\n \"description\": \"PurgeBackups toggles if the medusa backups should be purged nightly or not\\nDefaults to true.\",\n \"type\": \"boolean\"\n },\n \"readinessProbe\": {\n \"description\": \"Define the readiness probe settings to use for the Medusa containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext applied to the Medusa containers.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"storageProperties\": {\n \"description\": \"Provides all storage backend related properties for backups.\",\n \"properties\": {\n \"apiProfile\": {\n \"description\": \"AWS Profile to use for authentication.\",\n \"type\": \"string\"\n },\n \"backupGracePeriodInDays\": {\n \"description\": \"Age after which orphan sstables can be deleted from the storage backend.\\nProtects from race conditions between purge and ongoing backups.\\nDefaults to 10 days.\",\n \"type\": \"integer\"\n },\n \"bucketName\": {\n \"description\": \"The name of the bucket to use for the backups.\",\n \"type\": \"string\"\n },\n \"concurrentTransfers\": {\n \"default\": 0,\n \"description\": \"Number of concurrent uploads.\\nHelps maximizing the speed of uploads but puts more pressure on the network.\\nDefaults to 0.\",\n \"type\": \"integer\"\n },\n \"credentialsType\": {\n \"description\": \"Type of credentials to use for authentication.\\nCan be \\\"role-based\\\", \\\"credential-based\\\" or empty.\",\n \"enum\": [\n \"role-based\",\n \"credential-based\"\n ],\n \"type\": \"string\"\n },\n \"host\": {\n \"description\": \"Host to connect to for the storage backend.\",\n \"type\": \"string\"\n },\n \"maxBackupAge\": {\n \"default\": 0,\n \"description\": \"Maximum backup age that the purge process should observe.\",\n \"type\": \"integer\"\n },\n \"maxBackupCount\": {\n \"default\": 0,\n \"description\": \"Maximum number of backups to keep (used by the purge process).\\nDefault is unlimited.\",\n \"type\": \"integer\"\n },\n \"multiPartUploadThreshold\": {\n \"default\": 104857600,\n \"description\": \"File size over which cloud specific cli tools are used for transfer.\\nDefaults to 100 MB.\",\n \"type\": \"integer\"\n },\n \"podStorage\": {\n \"description\": \"Pod storage settings for the local storage provider\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"Pod local storage access modes\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"default\": \"10Gi\",\n \"description\": \"Size of the pod's storage in bytes.\\nDefaults to 10 GB.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"storageClassName\": {\n \"description\": \"Storage class name to use for the pod's storage.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"port\": {\n \"description\": \"Port to connect to for the storage backend.\",\n \"type\": \"integer\"\n },\n \"prefix\": {\n \"description\": \"Name of the top level folder in the backup bucket.\\nIf empty, the cluster name will be used.\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"Region of the storage bucket.\\nDefaults to \\\"default\\\".\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Whether to use SSL for the storage backend.\",\n \"type\": \"boolean\"\n },\n \"sslVerify\": {\n \"description\": \"When using SSL, whether to also verify the certificate.\",\n \"type\": \"boolean\"\n },\n \"storageProvider\": {\n \"description\": \"The storage backend to use for the backups.\",\n \"enum\": [\n \"google_storage\",\n \"azure_blobs\",\n \"s3\",\n \"s3_compatible\",\n \"s3_rgw\",\n \"ibm_storage\"\n ],\n \"type\": \"string\"\n },\n \"storageSecretRef\": {\n \"description\": \"Kubernetes Secret that stores the key file for the storage provider's API.\\nIf using 'local' storage, this value is ignored.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"transferMaxBandwidth\": {\n \"default\": \"50MB/s\",\n \"description\": \"Max upload bandwidth in MB/s.\\nDefaults to 50 MB/s.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"reaper\": {\n \"description\": \"Reaper defines the desired deployment characteristics for Reaper in this K8ssandraCluster.\\nIf this is non-nil, Reaper might be deployed on every Cassandra datacenter in this K8ssandraCluster, unless\\nthere is a Control Plane Reaper present. In that case, the K8ssandraCluster will get registered to it.\",\n \"properties\": {\n \"ServiceAccountName\": {\n \"default\": \"default\",\n \"type\": \"string\"\n },\n \"affinity\": {\n \"description\": \"Affinity applied to the Reaper pods.\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"autoScheduling\": {\n \"description\": \"Auto scheduling properties. When you enable the auto-schedule feature, Reaper dynamically schedules repairs for\\nall non-system keyspaces in a cluster. A cluster's keyspaces are monitored and any modifications (additions or\\nremovals) are detected. When a new keyspace is created, a new repair schedule is created automatically for that\\nkeyspace. Conversely, when a keyspace is removed, the corresponding repair schedule is deleted.\",\n \"properties\": {\n \"enabled\": {\n \"default\": false,\n \"type\": \"boolean\"\n },\n \"excludedClusters\": {\n \"description\": \"ExcludedClusters are the clusters that are to be excluded from the repair schedule.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"excludedKeyspaces\": {\n \"description\": \"ExcludedKeyspaces are the keyspaces that are to be excluded from the repair schedule.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"initialDelayPeriod\": {\n \"default\": \"PT15S\",\n \"description\": \"InitialDelay is the amount of delay time before the schedule period starts. Must be a valid ISO-8601 duration\\nstring. The default is \\\"PT15S\\\" (15 seconds).\",\n \"pattern\": \"([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?\",\n \"type\": \"string\"\n },\n \"percentUnrepairedThreshold\": {\n \"default\": 10,\n \"description\": \"PercentUnrepairedThreshold is the percentage of unrepaired data over which an incremental repair should be\\nstarted. Only relevant when using repair type INCREMENTAL.\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"periodBetweenPolls\": {\n \"default\": \"PT10M\",\n \"description\": \"PeriodBetweenPolls is the interval time to wait before checking whether to start a repair task. Must be a valid\\nISO-8601 duration string. The default is \\\"PT10M\\\" (10 minutes).\",\n \"pattern\": \"([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?\",\n \"type\": \"string\"\n },\n \"repairType\": {\n \"default\": \"AUTO\",\n \"description\": \"RepairType is the type of repair to create:\\n- REGULAR creates a regular repair (non-adaptive and non-incremental);\\n- ADAPTIVE creates an adaptive repair; adaptive repairs are most suited for Cassandra 3.\\n- INCREMENTAL creates an incremental repair; incremental repairs should only be used with Cassandra 4+.\\n- AUTO chooses between ADAPTIVE and INCREMENTAL depending on the Cassandra server version; ADAPTIVE for Cassandra\\n3 and INCREMENTAL for Cassandra 4+.\",\n \"enum\": [\n \"REGULAR\",\n \"ADAPTIVE\",\n \"INCREMENTAL\",\n \"AUTO\"\n ],\n \"type\": \"string\"\n },\n \"scheduleSpreadPeriod\": {\n \"default\": \"PT6H\",\n \"description\": \"ScheduleSpreadPeriod is the time spacing between each of the repair schedules that is to be carried out. Must be\\na valid ISO-8601 duration string. The default is \\\"PT6H\\\" (6 hours).\",\n \"pattern\": \"([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?\",\n \"type\": \"string\"\n },\n \"timeBeforeFirstSchedule\": {\n \"default\": \"PT5M\",\n \"description\": \"TimeBeforeFirstSchedule is the grace period before the first repair in the schedule is started. Must be a valid\\nISO-8601 duration string. The default is \\\"PT5M\\\" (5 minutes).\",\n \"pattern\": \"([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"cassandraUserSecretRef\": {\n \"description\": \"Defines the username and password that Reaper will use to authenticate CQL connections to Cassandra clusters.\\nThese credentials will be automatically turned into CQL roles by cass-operator when bootstrapping the datacenter,\\nthen passed to the Reaper instance, so that it can authenticate against nodes in the datacenter using CQL. If CQL\\nauthentication is not required, leave this field empty. The secret must be in the same namespace as Reaper itself\\nand must contain two keys: \\\"username\\\" and \\\"password\\\".\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"containerImage\": {\n \"default\": {\n \"name\": \"cassandra-reaper\",\n \"repository\": \"thelastpickle\",\n \"tag\": \"3.6.1\"\n },\n \"description\": \"The image to use for the Reaper pod main container.\\nThe default is \\\"thelastpickle/cassandra-reaper:3.6.1\\\".\\nTODO: update with real release version.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"deploymentMode\": {\n \"default\": \"PER_DC\",\n \"enum\": [\n \"PER_DC\",\n \"SINGLE\",\n \"CONTROL_PLANE\"\n ],\n \"type\": \"string\"\n },\n \"heapSize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"default\": \"2Gi\",\n \"description\": \"HeapSize sets the JVM heap size to use for Reaper.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"httpManagement\": {\n \"default\": {\n \"enabled\": false\n },\n \"properties\": {\n \"enabled\": {\n \"default\": false,\n \"description\": \"Enable/disable the HTTP management connection between Reaper and Cassandra.\\nWhen enabled, HTTP will be used instead of JMX for management connectivity between Cassandra\\nand Reaper. In future, this will be true by default\",\n \"type\": \"boolean\"\n },\n \"keystores\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"initContainerImage\": {\n \"description\": \"Deprecated: The main container image will be used for the init container as well.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"initContainerResources\": {\n \"description\": \"Init Container resources.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"initContainerSecurityContext\": {\n \"description\": \"InitContainerSecurityContext is the SecurityContext applied to the Reaper init container, used to perform schema\\nmigrations.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"jmxUserSecretRef\": {\n \"description\": \"Deprecated: JMX security is now based on CQL roles. Reaper will use cassandraUsefSecretRef for authentication,\\nthis field is ignored.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"keyspace\": {\n \"default\": \"reaper_db\",\n \"description\": \"The keyspace to use to store Reaper's state. Will default to \\\"reaper_db\\\" if unspecified. Will be created if it\\ndoes not exist, and if this Reaper resource is managed by K8ssandra.\",\n \"type\": \"string\"\n },\n \"livenessProbe\": {\n \"description\": \"LivenessProbe sets the Reaper liveness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"description\": \"labels and annotations for Reaper resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"labels/annotations that will be applied to all components\\ncreated by the CRD\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"pods\": {\n \"description\": \"labels/annotations for the pod components\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"description\": \"labels/annotations for the service component\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"podSecurityContext\": {\n \"description\": \"PodSecurityContext contains a pod-level SecurityContext to apply to Reaper pods.\",\n \"properties\": {\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"readinessProbe\": {\n \"description\": \"ReadinessProbe sets the Reaper readiness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"reaperRef\": {\n \"description\": \"When there is a CONTROL_PLANE Reaper out there, this field allows registering a K8ssandra cluster to it.\\nPopulating this field disables some operator behaviour related to setting Reaper up.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"API version of the referent.\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"If referring to a piece of an object instead of an entire object, this string\\nshould contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\\nFor example, if the object reference is to a container within a pod, this would take on a value like:\\n\\\"spec.containers{name}\\\" (where \\\"name\\\" refers to the name of the container that triggered\\nthe event) or if no container name is specified \\\"spec.containers[2]\\\" (container with\\nindex 2 in this pod). This syntax is chosen only to have some well-defined way of\\nreferencing a part of an object.\\nTODO: this design is not final and this field is subject to change in the future.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind of the referent.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/\",\n \"type\": \"string\"\n },\n \"resourceVersion\": {\n \"description\": \"Specific resourceVersion to which this reference is made, if any.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency\",\n \"type\": \"string\"\n },\n \"uid\": {\n \"description\": \"UID of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Main Container resources.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"secretsProvider\": {\n \"default\": \"internal\",\n \"description\": \"SecretsProvider defines whether the secrets used for credentials and certs will be backed\\nby an external secret backend. This moves the responsibility of generating and storing\\nsecrets from the operators to the user and will rely on a mutating webhook to inject\\nthe secrets into the necessary resources\",\n \"enum\": [\n \"internal\",\n \"external\"\n ],\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext applied to the Reaper main container.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"storageConfig\": {\n \"description\": \"If StorageType is \\\"local\\\", Reaper will need a Persistent Volume to persist its data. This field allows\\nconfiguring that Persistent Volume.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageType\": {\n \"default\": \"cassandra\",\n \"description\": \"The storage backend to store Reaper's data. Defaults to \\\"cassandra\\\" which causes Reaper to be stateless and store\\nits state to a Cassandra cluster it repairs (implying there must be one Reaper for each Cassandra cluster).\\nThe \\\"local\\\" option makes Reaper to store its state locally, allowing a single Reaper to repair several clusters.\",\n \"enum\": [\n \"cassandra\",\n \"local\"\n ],\n \"type\": \"string\"\n },\n \"telemetry\": {\n \"description\": \"Telemetry defines the desired telemetry integrations to deploy targeting the Reaper pods for all DCs in this cluster\\n(unless overridden by DC specific settings)\",\n \"properties\": {\n \"cassandra\": {\n \"properties\": {\n \"endpoint\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"relabels\": {\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion.\\nIt defines `\\u003cmetric_relabel_configs\\u003e`-section of Prometheus configuration.\\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"mcac\": {\n \"properties\": {\n \"enabled\": {\n \"description\": \"enabled sets whether MCAC (legacy metrics endpoint) is enabled.\\nThis is considered true by default.\",\n \"type\": \"boolean\"\n },\n \"metricFilters\": {\n \"description\": \"MetricFilters allows passing filters to MCAC in order to reduce the amount of extracted metrics.\\nNot setting this field will result in the default filters being used:\\n- \\\"deny:org.apache.cassandra.metrics.Table\\\"\\n- \\\"deny:org.apache.cassandra.metrics.table\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_ss_table_count\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.LiveSSTableCount\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_disk_space_used\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.LiveDiskSpaceUsed\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Pending\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Memtable\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Compaction\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.read\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.write\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.range\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.coordinator\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.dropped_mutations\\\"\\nSetting it to an empty list will result in all metrics being extracted.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"prometheus\": {\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"CommonLabels are applied to all serviceMonitors created.\",\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enable the creation of Prometheus serviceMonitors for this resource (Cassandra or Stargate).\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"vector\": {\n \"properties\": {\n \"components\": {\n \"properties\": {\n \"sinks\": {\n \"description\": \"Sinks is the list of sinks to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the sink.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the sink.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the sink.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sources\": {\n \"description\": \"Sources is the list of sources to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the source.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of the source.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"transforms\": {\n \"description\": \"Transforms is the list of transforms to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the transform.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the transform.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the transform.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enabled enables the Vector agent for this resource (Cassandra, Reaper or Stargate).\\nEnabling the vector agent will inject a sidecar container into the pod.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image is the name of the Vector image to use. If not set, the default image will be used.\\nkube:default=\\\"timberio/vector:0.26.0-alpine\\\"\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resources is the resource requirements for the Vector agent.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrapeInterval\": {\n \"description\": \"ScrapeInterval is the interval at which the Vector agent will scrape the metrics endpoint.\\nUse values like 30s, 1m, 5m.\\nkube:default=30s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations applied to the Reaper pods.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"uiUserSecretRef\": {\n \"description\": \"Defines the secret which contains the username and password for the Reaper UI and REST API authentication. When UiUserSecretRef.Name == \\\"\\\", authentication is turned off in the front-end only.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secretsProvider\": {\n \"default\": \"internal\",\n \"description\": \"SecretsProvider defines whether the secrets used for credentials and certs will be backed\\nby an external secret backend (e.g. vault). This moves the responsibility of generating and\\nstoring secrets from the operators to the user and will rely on a mutating webhook to inject\\nthe secrets into the necessary resources\",\n \"enum\": [\n \"internal\",\n \"external\"\n ],\n \"type\": \"string\"\n },\n \"stargate\": {\n \"description\": \"Stargate defines the desired deployment characteristics for Stargate in this K8ssandraCluster.\\nIf this is non-nil, Stargate will be deployed on every Cassandra datacenter in this K8ssandraCluster.\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity is the affinity to apply to all the Stargate pods.\\nLeave nil to let the controller reuse the same affinity rules used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"allowStargateOnDataNodes\": {\n \"default\": false,\n \"description\": \"AllowStargateOnDataNodes allows Stargate pods to be scheduled on a worker node already hosting data pods for this\\ndatacenter. The default is false, which means that Stargate pods will be scheduled on separate worker nodes.\\nNote: if the datacenter pods have HostNetwork:true, then the Stargate pods will inherit of it, in which case it\\nis possible that Stargate nodes won't be allowed to sit on data nodes even if this property is set to true,\\nbecause of port conflicts on the same IP address.\",\n \"type\": \"boolean\"\n },\n \"authOptions\": {\n \"description\": \"Authentication options.\",\n \"properties\": {\n \"apiAuthMethod\": {\n \"default\": \"Table\",\n \"description\": \"The method to use for authenticating requests to the Stargate APIs. Stargate currently has\\ntwo authentication / authorization methods:\\n- Table: table-based;\\n- JWT: JSON web token (JWT)-based.\\nThe methods are mutually exclusive. The default method is Table.\",\n \"enum\": [\n \"Table\",\n \"JWT\"\n ],\n \"type\": \"string\"\n },\n \"providerUrl\": {\n \"description\": \"Required when using JWT authentication method, ignored otherwise.\",\n \"type\": \"string\"\n },\n \"tokenTtlSeconds\": {\n \"description\": \"The time-to-live in seconds of an API authentication token. Valid only for the Table\\nauthentication method. By default, the token persists for 30 minutes with a sliding window.\\nEach use of the token to authenticate resets the 30-minute window. A token created and used\\nafter 29 minutes will authenticate a request, but if 31 minutes passes before use, the token\\nwill no longer exist.\\nDefault is 1800 seconds (30 minutes).\",\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"cassandraConfigMapRef\": {\n \"description\": \"CassandraConfigMapRef is a reference to a ConfigMap that holds Cassandra configuration.\\nThe map should have a key named cassandra_yaml.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"containerImage\": {\n \"default\": {\n \"repository\": \"stargateio\",\n \"tag\": \"v1.0.77\"\n },\n \"description\": \"ContainerImage is the image characteristics to use for Stargate containers. Leave nil\\nto use a default image.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"heapSize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"default\": \"256Mi\",\n \"description\": \"HeapSize sets the JVM heap size to use for Stargate. If no Resources are specified, this\\nvalue will also be used to set a default memory request and limit for the Stargate pods:\\nthese will be set to HeapSize x2 and x4, respectively.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"livenessProbe\": {\n \"description\": \"LivenessProbe sets the Stargate liveness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"description\": \"labels and annotations for Stargate resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"labels/annotations that will be applied to all components\\ncreated by the CRD\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"pods\": {\n \"description\": \"labels/annotations for the pod components\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"description\": \"labels/annotations for the service component\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is an optional map of label keys and values to restrict the scheduling of Stargate nodes to workers\\nwith matching labels.\\nLeave nil to let the controller reuse the same node selectors used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector\",\n \"type\": \"object\"\n },\n \"readinessProbe\": {\n \"description\": \"ReadinessProbe sets the Stargate readiness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Resources is the Kubernetes resource requests and limits to apply, per Stargate pod. Leave\\nnil to use defaults.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"secretsProvider\": {\n \"default\": \"internal\",\n \"description\": \"SecretsProvider defines whether the secrets used for credentials and certs will be backed\\nby an external secret backend. This moves the responsibility of generating and storing\\nsecrets from the operators to the user and will rely on a mutating webhook to inject\\nthe secrets into the necessary resources\",\n \"enum\": [\n \"internal\",\n \"external\"\n ],\n \"type\": \"string\"\n },\n \"serviceAccount\": {\n \"default\": \"default\",\n \"description\": \"ServiceAccount is the service account name to use for Stargate pods.\",\n \"type\": \"string\"\n },\n \"size\": {\n \"default\": 1,\n \"description\": \"Size is the number of Stargate instances to deploy in each datacenter. They will be spread evenly across racks.\",\n \"format\": \"int32\",\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"telemetry\": {\n \"description\": \"Telemetry defines the desired telemetry integrations to deploy targeting the Stargate pods for all DCs in this cluster\\n(unless overridden by DC specific settings)\",\n \"properties\": {\n \"cassandra\": {\n \"properties\": {\n \"endpoint\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"relabels\": {\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion.\\nIt defines `\\u003cmetric_relabel_configs\\u003e`-section of Prometheus configuration.\\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"mcac\": {\n \"properties\": {\n \"enabled\": {\n \"description\": \"enabled sets whether MCAC (legacy metrics endpoint) is enabled.\\nThis is considered true by default.\",\n \"type\": \"boolean\"\n },\n \"metricFilters\": {\n \"description\": \"MetricFilters allows passing filters to MCAC in order to reduce the amount of extracted metrics.\\nNot setting this field will result in the default filters being used:\\n- \\\"deny:org.apache.cassandra.metrics.Table\\\"\\n- \\\"deny:org.apache.cassandra.metrics.table\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_ss_table_count\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.LiveSSTableCount\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_disk_space_used\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.LiveDiskSpaceUsed\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Pending\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Memtable\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Compaction\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.read\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.write\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.range\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.coordinator\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.dropped_mutations\\\"\\nSetting it to an empty list will result in all metrics being extracted.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"prometheus\": {\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"CommonLabels are applied to all serviceMonitors created.\",\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enable the creation of Prometheus serviceMonitors for this resource (Cassandra or Stargate).\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"vector\": {\n \"properties\": {\n \"components\": {\n \"properties\": {\n \"sinks\": {\n \"description\": \"Sinks is the list of sinks to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the sink.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the sink.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the sink.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sources\": {\n \"description\": \"Sources is the list of sources to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the source.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of the source.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"transforms\": {\n \"description\": \"Transforms is the list of transforms to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the transform.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the transform.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the transform.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enabled enables the Vector agent for this resource (Cassandra, Reaper or Stargate).\\nEnabling the vector agent will inject a sidecar container into the pod.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image is the name of the Vector image to use. If not set, the default image will be used.\\nkube:default=\\\"timberio/vector:0.26.0-alpine\\\"\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resources is the resource requirements for the Vector agent.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrapeInterval\": {\n \"description\": \"ScrapeInterval is the interval at which the Vector agent will scrape the metrics endpoint.\\nUse values like 30s, 1m, 5m.\\nkube:default=30s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations are tolerations to apply to the Stargate pods.\\nLeave nil to let the controller reuse the same tolerations used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"size\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"K8ssandra Cluster\",\n \"type\": \"object\"\n}", + "version": "k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "K8ssandra Cluster", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/K8ssandraTask.json b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/K8ssandraTask.json new file mode 100644 index 00000000000..a3dc537d02f --- /dev/null +++ b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/K8ssandraTask.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "K8ssandraTask", + "schema": "{\n \"description\": \"K8ssandraTask is the Schema for the k8ssandratasks API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"K8ssandraTaskSpec defines the desired state of K8ssandraTask\",\n \"properties\": {\n \"cluster\": {\n \"description\": \"Which K8ssandraCluster this task is operating on.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"API version of the referent.\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"If referring to a piece of an object instead of an entire object, this string\\nshould contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\\nFor example, if the object reference is to a container within a pod, this would take on a value like:\\n\\\"spec.containers{name}\\\" (where \\\"name\\\" refers to the name of the container that triggered\\nthe event) or if no container name is specified \\\"spec.containers[2]\\\" (container with\\nindex 2 in this pod). This syntax is chosen only to have some well-defined way of\\nreferencing a part of an object.\\nTODO: this design is not final and this field is subject to change in the future.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind of the referent.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/\",\n \"type\": \"string\"\n },\n \"resourceVersion\": {\n \"description\": \"Specific resourceVersion to which this reference is made, if any.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency\",\n \"type\": \"string\"\n },\n \"uid\": {\n \"description\": \"UID of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"datacenters\": {\n \"description\": \"The names of the targeted datacenters. If omitted, will default to all DCs in spec order.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dcConcurrencyPolicy\": {\n \"description\": \"How to handle concurrency across DCs. Valid values are:\\n- \\\"Forbid\\\" (default): sequential processing. The K8ssandraTask only spawns one CassandraTask at a time, which\\n must run to completion before the CassandraTask for the next DC is created. If any CassandraTask fails, the\\n K8ssandraTask is marked as failed, and the remaining CassandraTasks are cancelled (i.e. never created).\\n- \\\"Allow\\\": parallel processing. The K8ssandraTask spawns all CassandraTasks at once. If any CassandraTask fails,\\n the K8ssandraTask is marked as failed, but the remaining CassandraTasks finish running.\",\n \"type\": \"string\"\n },\n \"template\": {\n \"description\": \"The characteristics of the CassandraTask that will get created for each DC.\",\n \"properties\": {\n \"concurrencyPolicy\": {\n \"description\": \"Specifics if this task can be run concurrently with other active tasks. Valid values are:\\n- \\\"Allow\\\": allows multiple Tasks to run concurrently on Cassandra cluster\\n- \\\"Forbid\\\" (default): only a single task is executed at once\\nThe \\\"Allow\\\" property is only valid if all the other active Tasks have \\\"Allow\\\" as well.\",\n \"type\": \"string\"\n },\n \"jobs\": {\n \"description\": \"Jobs defines the jobs this task will execute (and their order)\",\n \"items\": {\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments are additional parameters for the command\",\n \"properties\": {\n \"end_token\": {\n \"type\": \"string\"\n },\n \"jobs\": {\n \"type\": \"integer\"\n },\n \"keyspace_name\": {\n \"type\": \"string\"\n },\n \"new_tokens\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NewTokens is a map of pod names to their newly-assigned tokens. Required for the move\\ncommand, ignored otherwise. Pods referenced in this map must exist; any existing pod not\\nreferenced in this map will not be moved.\",\n \"type\": \"object\"\n },\n \"no_snapshot\": {\n \"type\": \"boolean\"\n },\n \"no_validate\": {\n \"description\": \"Scrub arguments\",\n \"type\": \"boolean\"\n },\n \"pod_name\": {\n \"type\": \"string\"\n },\n \"rack\": {\n \"type\": \"string\"\n },\n \"skip_corrupted\": {\n \"type\": \"boolean\"\n },\n \"source_datacenter\": {\n \"type\": \"string\"\n },\n \"split_output\": {\n \"description\": \"Compaction arguments\",\n \"type\": \"boolean\"\n },\n \"start_token\": {\n \"type\": \"string\"\n },\n \"tables\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"command\": {\n \"description\": \"Command defines what is run against Cassandra pods\",\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"command\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy indicates the behavior n case of failure. Default is Never.\",\n \"type\": \"string\"\n },\n \"scheduledTime\": {\n \"description\": \"ScheduledTime indicates the earliest possible time this task is executed. This does not necessarily\\nequal to the time it is actually executed (if other tasks are blocking for example). If not set,\\nthe task will be executed immediately.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"ttlSecondsAfterFinished\": {\n \"description\": \"TTLSecondsAfterFinished defines how long the completed job will kept before being cleaned up. If set to 0\\nthe task will not be cleaned up by the cass-operator. If unset, the default time (86400s) is used.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"K8ssandra Task\",\n \"type\": \"object\"\n}", + "version": "control.k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "K8ssandra Task", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackup.json b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackup.json new file mode 100644 index 00000000000..1d10f23f93b --- /dev/null +++ b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackup.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "MedusaBackup", + "schema": "{\n \"description\": \"MedusaBackup is the Schema for the medusabackups API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"MedusaBackupSpec defines the desired state of MedusaBackup\",\n \"properties\": {\n \"backupType\": {\n \"default\": \"differential\",\n \"description\": \"The type of the backup: \\\"full\\\" or \\\"differential\\\"\",\n \"enum\": [\n \"differential\",\n \"full\"\n ],\n \"type\": \"string\"\n },\n \"cassandraDatacenter\": {\n \"description\": \"The name of the CassandraDatacenter to back up\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"cassandraDatacenter\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Medusa Backup\",\n \"type\": \"object\"\n}", + "version": "medusa.k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Medusa Backup", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackupJob.json b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackupJob.json new file mode 100644 index 00000000000..c5dd8b4b0bb --- /dev/null +++ b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackupJob.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "MedusaBackupJob", + "schema": "{\n \"description\": \"MedusaBackupJob is the Schema for the medusabackupjobs API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"MedusaBackupJobSpec defines the desired state of MedusaBackupJob\",\n \"properties\": {\n \"backupType\": {\n \"default\": \"differential\",\n \"description\": \"The type of the backup: \\\"full\\\" or \\\"differential\\\"\",\n \"enum\": [\n \"differential\",\n \"full\"\n ],\n \"type\": \"string\"\n },\n \"cassandraDatacenter\": {\n \"description\": \"The name of the CassandraDatacenter to back up\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"cassandraDatacenter\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Medusa Backup Job\",\n \"type\": \"object\"\n}", + "version": "medusa.k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Medusa Backup Job", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackupSchedule.json b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackupSchedule.json new file mode 100644 index 00000000000..890a42dbd93 --- /dev/null +++ b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaBackupSchedule.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "MedusaBackupSchedule", + "schema": "{\n \"description\": \"MedusaBackupSchedule is the Schema for the medusabackupschedules API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"MedusaBackupScheduleSpec defines the desired state of MedusaBackupSchedule\",\n \"properties\": {\n \"backupSpec\": {\n \"description\": \"BackupSpec defines the MedusaBackup to be created for this job\",\n \"properties\": {\n \"backupType\": {\n \"default\": \"differential\",\n \"description\": \"The type of the backup: \\\"full\\\" or \\\"differential\\\"\",\n \"enum\": [\n \"differential\",\n \"full\"\n ],\n \"type\": \"string\"\n },\n \"cassandraDatacenter\": {\n \"description\": \"The name of the CassandraDatacenter to back up\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"cassandraDatacenter\"\n ],\n \"type\": \"object\"\n },\n \"concurrencyPolicy\": {\n \"description\": \"Specifics if this backup task can be run concurrently with other active backup tasks. Valid values are:\\n- \\\"Allow\\\": allows multiple Tasks to run concurrently on Cassandra cluster\\n- \\\"Forbid\\\" (default): only a single task is executed at once\\nThe \\\"Allow\\\" property is only valid if all the other active Tasks have \\\"Allow\\\" as well.\",\n \"type\": \"string\"\n },\n \"cronSchedule\": {\n \"description\": \"CronSchedule is a cronjob format schedule for backups. Overrides any easier methods of defining the schedule\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"disabled\": {\n \"description\": \"Disabled if set ensures this job is not scheduling anything\",\n \"type\": \"boolean\"\n },\n \"operationType\": {\n \"default\": \"backup\",\n \"description\": \"Specifies the type of operation to be performed\",\n \"enum\": [\n \"backup\",\n \"purge\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"backupSpec\",\n \"cronSchedule\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Medusa Backup Schedule\",\n \"type\": \"object\"\n}", + "version": "medusa.k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Medusa Backup Schedule", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaConfiguration.json b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaConfiguration.json new file mode 100644 index 00000000000..42f60d8a80d --- /dev/null +++ b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaConfiguration.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "MedusaConfiguration", + "schema": "{\n \"description\": \"MedusaConfiguration is the Schema for the medusaconfigurations API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"MedusaConfigurationSpec defines the desired state of MedusaConfiguration\",\n \"properties\": {\n \"storageProperties\": {\n \"description\": \"StorageProperties defines the storage backend settings to use for the backups.\",\n \"properties\": {\n \"apiProfile\": {\n \"description\": \"AWS Profile to use for authentication.\",\n \"type\": \"string\"\n },\n \"backupGracePeriodInDays\": {\n \"description\": \"Age after which orphan sstables can be deleted from the storage backend.\\nProtects from race conditions between purge and ongoing backups.\\nDefaults to 10 days.\",\n \"type\": \"integer\"\n },\n \"bucketName\": {\n \"description\": \"The name of the bucket to use for the backups.\",\n \"type\": \"string\"\n },\n \"concurrentTransfers\": {\n \"default\": 0,\n \"description\": \"Number of concurrent uploads.\\nHelps maximizing the speed of uploads but puts more pressure on the network.\\nDefaults to 0.\",\n \"type\": \"integer\"\n },\n \"credentialsType\": {\n \"description\": \"Type of credentials to use for authentication.\\nCan be \\\"role-based\\\", \\\"credential-based\\\" or empty.\",\n \"enum\": [\n \"role-based\",\n \"credential-based\"\n ],\n \"type\": \"string\"\n },\n \"host\": {\n \"description\": \"Host to connect to for the storage backend.\",\n \"type\": \"string\"\n },\n \"maxBackupAge\": {\n \"default\": 0,\n \"description\": \"Maximum backup age that the purge process should observe.\",\n \"type\": \"integer\"\n },\n \"maxBackupCount\": {\n \"default\": 0,\n \"description\": \"Maximum number of backups to keep (used by the purge process).\\nDefault is unlimited.\",\n \"type\": \"integer\"\n },\n \"multiPartUploadThreshold\": {\n \"default\": 104857600,\n \"description\": \"File size over which cloud specific cli tools are used for transfer.\\nDefaults to 100 MB.\",\n \"type\": \"integer\"\n },\n \"podStorage\": {\n \"description\": \"Pod storage settings for the local storage provider\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"Pod local storage access modes\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"default\": \"10Gi\",\n \"description\": \"Size of the pod's storage in bytes.\\nDefaults to 10 GB.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"storageClassName\": {\n \"description\": \"Storage class name to use for the pod's storage.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"port\": {\n \"description\": \"Port to connect to for the storage backend.\",\n \"type\": \"integer\"\n },\n \"prefix\": {\n \"description\": \"Name of the top level folder in the backup bucket.\\nIf empty, the cluster name will be used.\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"Region of the storage bucket.\\nDefaults to \\\"default\\\".\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Whether to use SSL for the storage backend.\",\n \"type\": \"boolean\"\n },\n \"sslVerify\": {\n \"description\": \"When using SSL, whether to also verify the certificate.\",\n \"type\": \"boolean\"\n },\n \"storageProvider\": {\n \"description\": \"The storage backend to use for the backups.\",\n \"enum\": [\n \"google_storage\",\n \"azure_blobs\",\n \"s3\",\n \"s3_compatible\",\n \"s3_rgw\",\n \"ibm_storage\"\n ],\n \"type\": \"string\"\n },\n \"storageSecretRef\": {\n \"description\": \"Kubernetes Secret that stores the key file for the storage provider's API.\\nIf using 'local' storage, this value is ignored.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"transferMaxBandwidth\": {\n \"default\": \"50MB/s\",\n \"description\": \"Max upload bandwidth in MB/s.\\nDefaults to 50 MB/s.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Medusa Configuration\",\n \"type\": \"object\"\n}", + "version": "medusa.k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Medusa Configuration", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaRestoreJob.json b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaRestoreJob.json new file mode 100644 index 00000000000..bc953f1ac7a --- /dev/null +++ b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaRestoreJob.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "MedusaRestoreJob", + "schema": "{\n \"description\": \"MedusaRestoreJob is the Schema for the medusarestorejobs API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"MedusaRestoreJobSpec defines the desired state of MedusaRestoreJob\",\n \"properties\": {\n \"backup\": {\n \"description\": \"The name of the MedusaBackup to restore.\",\n \"type\": \"string\"\n },\n \"cassandraDatacenter\": {\n \"description\": \"Name of the Cassandra datacenter to perform the restore on.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"backup\",\n \"cassandraDatacenter\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Medusa Restore Job\",\n \"type\": \"object\"\n}", + "version": "medusa.k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Medusa Restore Job", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaTask.json b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaTask.json new file mode 100644 index 00000000000..5f37f2c5ca1 --- /dev/null +++ b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/MedusaTask.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "MedusaTask", + "schema": "{\n \"description\": \"MedusaTask is the Schema for the MedusaTasks API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"MedusaTaskSpec defines the desired state of MedusaTask\",\n \"properties\": {\n \"backupName\": {\n \"description\": \"Name of the backup.\\nWill be necessary for operations such as verify or status.\",\n \"type\": \"string\"\n },\n \"cassandraDatacenter\": {\n \"description\": \"The name of the CassandraDatacenter to run the task on\",\n \"type\": \"string\"\n },\n \"operation\": {\n \"description\": \"Requested operation to perform.\",\n \"enum\": [\n \"sync\",\n \"purge\",\n \"prepare_restore\"\n ],\n \"type\": \"string\"\n },\n \"restoreKey\": {\n \"description\": \"Restore key to use for the prepare_restore operation.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"cassandraDatacenter\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Medusa Task\",\n \"type\": \"object\"\n}", + "version": "medusa.k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Medusa Task", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/Reaper.json b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/Reaper.json new file mode 100644 index 00000000000..130f0bb5a47 --- /dev/null +++ b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/Reaper.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "Reaper", + "schema": "{\n \"description\": \"Reaper is the Schema for the reapers API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"ReaperSpec defines the desired state of Reaper\",\n \"properties\": {\n \"ServiceAccountName\": {\n \"default\": \"default\",\n \"type\": \"string\"\n },\n \"affinity\": {\n \"description\": \"Affinity applied to the Reaper pods.\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"autoScheduling\": {\n \"description\": \"Auto scheduling properties. When you enable the auto-schedule feature, Reaper dynamically schedules repairs for\\nall non-system keyspaces in a cluster. A cluster's keyspaces are monitored and any modifications (additions or\\nremovals) are detected. When a new keyspace is created, a new repair schedule is created automatically for that\\nkeyspace. Conversely, when a keyspace is removed, the corresponding repair schedule is deleted.\",\n \"properties\": {\n \"enabled\": {\n \"default\": false,\n \"type\": \"boolean\"\n },\n \"excludedClusters\": {\n \"description\": \"ExcludedClusters are the clusters that are to be excluded from the repair schedule.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"excludedKeyspaces\": {\n \"description\": \"ExcludedKeyspaces are the keyspaces that are to be excluded from the repair schedule.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"initialDelayPeriod\": {\n \"default\": \"PT15S\",\n \"description\": \"InitialDelay is the amount of delay time before the schedule period starts. Must be a valid ISO-8601 duration\\nstring. The default is \\\"PT15S\\\" (15 seconds).\",\n \"pattern\": \"([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?\",\n \"type\": \"string\"\n },\n \"percentUnrepairedThreshold\": {\n \"default\": 10,\n \"description\": \"PercentUnrepairedThreshold is the percentage of unrepaired data over which an incremental repair should be\\nstarted. Only relevant when using repair type INCREMENTAL.\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"periodBetweenPolls\": {\n \"default\": \"PT10M\",\n \"description\": \"PeriodBetweenPolls is the interval time to wait before checking whether to start a repair task. Must be a valid\\nISO-8601 duration string. The default is \\\"PT10M\\\" (10 minutes).\",\n \"pattern\": \"([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?\",\n \"type\": \"string\"\n },\n \"repairType\": {\n \"default\": \"AUTO\",\n \"description\": \"RepairType is the type of repair to create:\\n- REGULAR creates a regular repair (non-adaptive and non-incremental);\\n- ADAPTIVE creates an adaptive repair; adaptive repairs are most suited for Cassandra 3.\\n- INCREMENTAL creates an incremental repair; incremental repairs should only be used with Cassandra 4+.\\n- AUTO chooses between ADAPTIVE and INCREMENTAL depending on the Cassandra server version; ADAPTIVE for Cassandra\\n3 and INCREMENTAL for Cassandra 4+.\",\n \"enum\": [\n \"REGULAR\",\n \"ADAPTIVE\",\n \"INCREMENTAL\",\n \"AUTO\"\n ],\n \"type\": \"string\"\n },\n \"scheduleSpreadPeriod\": {\n \"default\": \"PT6H\",\n \"description\": \"ScheduleSpreadPeriod is the time spacing between each of the repair schedules that is to be carried out. Must be\\na valid ISO-8601 duration string. The default is \\\"PT6H\\\" (6 hours).\",\n \"pattern\": \"([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?\",\n \"type\": \"string\"\n },\n \"timeBeforeFirstSchedule\": {\n \"default\": \"PT5M\",\n \"description\": \"TimeBeforeFirstSchedule is the grace period before the first repair in the schedule is started. Must be a valid\\nISO-8601 duration string. The default is \\\"PT5M\\\" (5 minutes).\",\n \"pattern\": \"([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"cassandraUserSecretRef\": {\n \"description\": \"Defines the username and password that Reaper will use to authenticate CQL connections to Cassandra clusters.\\nThese credentials will be automatically turned into CQL roles by cass-operator when bootstrapping the datacenter,\\nthen passed to the Reaper instance, so that it can authenticate against nodes in the datacenter using CQL. If CQL\\nauthentication is not required, leave this field empty. The secret must be in the same namespace as Reaper itself\\nand must contain two keys: \\\"username\\\" and \\\"password\\\".\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"clientEncryptionStores\": {\n \"description\": \"Client encryption stores which are used by Cassandra and Reaper.\",\n \"properties\": {\n \"keystorePasswordSecretRef\": {\n \"description\": \"ref to the secret that contains the keystore password if password stored in different secret than keystoreSecretRef\\nif key isn't specified explicitly, \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"keystoreSecretRef\": {\n \"description\": \"ref to the secret that contains the keystore and optionally its password (which can also be specified through\\nthe keystorePasswordSecretRef field)\\nif keys are not specified, \\\"keystore\\\" entry and a \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"truststorePasswordSecretRef\": {\n \"description\": \"ref to the secret that contains the truststore password if password stored in different secret than keystoreSecretRef\\nif key isn't specified explicitly, \\\"truststore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"truststoreSecretRef\": {\n \"description\": \"ref to the secret that contains the truststore and optionally its password (which can also be specified through\\nthe truststorePasswordSecretRef field)\\nif keys are not specified explicitly, \\\"keystore\\\" entry and a \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"keystoreSecretRef\",\n \"truststoreSecretRef\"\n ],\n \"type\": \"object\"\n },\n \"containerImage\": {\n \"default\": {\n \"name\": \"cassandra-reaper\",\n \"repository\": \"thelastpickle\",\n \"tag\": \"3.6.1\"\n },\n \"description\": \"The image to use for the Reaper pod main container.\\nThe default is \\\"thelastpickle/cassandra-reaper:3.6.1\\\".\\nTODO: update with real release version.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"datacenterAvailability\": {\n \"default\": \"ALL\",\n \"description\": \"DatacenterAvailability indicates to Reaper its deployment in relation to the target datacenter's network.\\nFor single-DC clusters, the default (ALL) is fine. For multi-DC clusters, it is recommended to use EACH,\\nprovided that there is one Reaper instance managing each DC in the cluster; otherwise, if one single Reaper\\ninstance is going to manage more than one DC in the cluster, use ALL.\\nSee https://cassandra-reaper.io/docs/usage/multi_dc/.\",\n \"enum\": [\n \"LOCAL\",\n \"ALL\",\n \"EACH\"\n ],\n \"type\": \"string\"\n },\n \"datacenterRef\": {\n \"description\": \"DatacenterRef is the reference of a CassandraDatacenter resource that this Reaper instance should manage. It will\\nalso be used as the backend for persisting Reaper's state. Reaper must be able to access the JMX port (7199 by\\ndefault) and the CQL port (9042 by default) on this DC.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The datacenter name.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"The datacenter namespace. If empty, the datacenter will be assumed to reside in the same namespace as the Reaper\\ninstance.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"heapSize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"default\": \"2Gi\",\n \"description\": \"HeapSize sets the JVM heap size to use for Reaper.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"httpManagement\": {\n \"default\": {\n \"enabled\": false\n },\n \"properties\": {\n \"enabled\": {\n \"default\": false,\n \"description\": \"Enable/disable the HTTP management connection between Reaper and Cassandra.\\nWhen enabled, HTTP will be used instead of JMX for management connectivity between Cassandra\\nand Reaper. In future, this will be true by default\",\n \"type\": \"boolean\"\n },\n \"keystores\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"initContainerImage\": {\n \"description\": \"Deprecated: The main container image will be used for the init container as well.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"initContainerResources\": {\n \"description\": \"Init Container resources.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"initContainerSecurityContext\": {\n \"description\": \"InitContainerSecurityContext is the SecurityContext applied to the Reaper init container, used to perform schema\\nmigrations.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"jmxUserSecretRef\": {\n \"description\": \"Deprecated: JMX security is now based on CQL roles. Reaper will use cassandraUsefSecretRef for authentication,\\nthis field is ignored.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"keyspace\": {\n \"default\": \"reaper_db\",\n \"description\": \"The keyspace to use to store Reaper's state. Will default to \\\"reaper_db\\\" if unspecified. Will be created if it\\ndoes not exist, and if this Reaper resource is managed by K8ssandra.\",\n \"type\": \"string\"\n },\n \"livenessProbe\": {\n \"description\": \"LivenessProbe sets the Reaper liveness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"description\": \"labels and annotations for Reaper resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"labels/annotations that will be applied to all components\\ncreated by the CRD\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"pods\": {\n \"description\": \"labels/annotations for the pod components\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"description\": \"labels/annotations for the service component\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"podSecurityContext\": {\n \"description\": \"PodSecurityContext contains a pod-level SecurityContext to apply to Reaper pods.\",\n \"properties\": {\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"readinessProbe\": {\n \"description\": \"ReadinessProbe sets the Reaper readiness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Main Container resources.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"secretsProvider\": {\n \"default\": \"internal\",\n \"description\": \"SecretsProvider defines whether the secrets used for credentials and certs will be backed\\nby an external secret backend. This moves the responsibility of generating and storing\\nsecrets from the operators to the user and will rely on a mutating webhook to inject\\nthe secrets into the necessary resources\",\n \"enum\": [\n \"internal\",\n \"external\"\n ],\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext applied to the Reaper main container.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"skipSchemaMigration\": {\n \"default\": false,\n \"description\": \"Whether to skip schema migration. Schema migration is done in an init container on every Reaper deployment and\\ncan slow down Reaper's startup time. Besides, schema migration requires reading data at QUORUM. It can be skipped\\nif you know that the schema is already up-to-date, or if you know upfront that QUORUM cannot be achieved (for\\nexample, because a DC is down).\",\n \"type\": \"boolean\"\n },\n \"storageConfig\": {\n \"description\": \"If StorageType is \\\"local\\\", Reaper will need a Persistent Volume to persist its data. This field allows\\nconfiguring that Persistent Volume.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageType\": {\n \"default\": \"cassandra\",\n \"description\": \"The storage backend to store Reaper's data. Defaults to \\\"cassandra\\\" which causes Reaper to be stateless and store\\nits state to a Cassandra cluster it repairs (implying there must be one Reaper for each Cassandra cluster).\\nThe \\\"local\\\" option makes Reaper to store its state locally, allowing a single Reaper to repair several clusters.\",\n \"enum\": [\n \"cassandra\",\n \"local\"\n ],\n \"type\": \"string\"\n },\n \"telemetry\": {\n \"description\": \"Telemetry defines the desired telemetry integrations to deploy targeting the Reaper pods for all DCs in this cluster\\n(unless overridden by DC specific settings)\",\n \"properties\": {\n \"cassandra\": {\n \"properties\": {\n \"endpoint\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"relabels\": {\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion.\\nIt defines `\\u003cmetric_relabel_configs\\u003e`-section of Prometheus configuration.\\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"mcac\": {\n \"properties\": {\n \"enabled\": {\n \"description\": \"enabled sets whether MCAC (legacy metrics endpoint) is enabled.\\nThis is considered true by default.\",\n \"type\": \"boolean\"\n },\n \"metricFilters\": {\n \"description\": \"MetricFilters allows passing filters to MCAC in order to reduce the amount of extracted metrics.\\nNot setting this field will result in the default filters being used:\\n- \\\"deny:org.apache.cassandra.metrics.Table\\\"\\n- \\\"deny:org.apache.cassandra.metrics.table\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_ss_table_count\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.LiveSSTableCount\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_disk_space_used\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.LiveDiskSpaceUsed\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Pending\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Memtable\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Compaction\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.read\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.write\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.range\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.coordinator\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.dropped_mutations\\\"\\nSetting it to an empty list will result in all metrics being extracted.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"prometheus\": {\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"CommonLabels are applied to all serviceMonitors created.\",\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enable the creation of Prometheus serviceMonitors for this resource (Cassandra or Stargate).\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"vector\": {\n \"properties\": {\n \"components\": {\n \"properties\": {\n \"sinks\": {\n \"description\": \"Sinks is the list of sinks to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the sink.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the sink.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the sink.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sources\": {\n \"description\": \"Sources is the list of sources to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the source.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of the source.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"transforms\": {\n \"description\": \"Transforms is the list of transforms to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the transform.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the transform.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the transform.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enabled enables the Vector agent for this resource (Cassandra, Reaper or Stargate).\\nEnabling the vector agent will inject a sidecar container into the pod.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image is the name of the Vector image to use. If not set, the default image will be used.\\nkube:default=\\\"timberio/vector:0.26.0-alpine\\\"\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resources is the resource requirements for the Vector agent.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrapeInterval\": {\n \"description\": \"ScrapeInterval is the interval at which the Vector agent will scrape the metrics endpoint.\\nUse values like 30s, 1m, 5m.\\nkube:default=30s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations applied to the Reaper pods.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"uiUserSecretRef\": {\n \"description\": \"Defines the secret which contains the username and password for the Reaper UI and REST API authentication. When UiUserSecretRef.Name == \\\"\\\", authentication is turned off in the front-end only.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Reaper\",\n \"type\": \"object\"\n}", + "version": "reaper.k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Reaper", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/ReplicatedSecret.json b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/ReplicatedSecret.json new file mode 100644 index 00000000000..cdc613aff11 --- /dev/null +++ b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/ReplicatedSecret.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "ReplicatedSecret", + "schema": "{\n \"description\": \"ReplicatedSecret is the Schema for the replicatedsecrets API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"ReplicatedSecretSpec defines the desired state of ReplicatedSecret\",\n \"properties\": {\n \"replicationTargets\": {\n \"description\": \"TargetContexts indicates the target clusters to which the secrets are replicated to. If empty, no clusters are targeted\",\n \"items\": {\n \"properties\": {\n \"addLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"AddLabels adds labels to the target secret.\",\n \"type\": \"object\"\n },\n \"dropLabels\": {\n \"description\": \"DropLabels defines the labels to be dropped from the secret before replication, this is sometimes neccessary to avoid infinite replication.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"k8sContextName\": {\n \"description\": \"K8sContextName defines the target cluster name as set in the ClientConfig. If left empty, current cluster is assumed\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"TODO Implement at some point\\nNamespace to replicate the data to in the target cluster. If left empty, current namespace is used.\",\n \"type\": \"string\"\n },\n \"targetPrefix\": {\n \"description\": \"TargetPrefix is the prefix to be used for the replicated secret in the target cluster. If left empty, the same name is used\\nas the original secret.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"selector\": {\n \"description\": \"Selector defines which secrets are replicated. If left empty, all the secrets are replicated\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Replicated Secret\",\n \"type\": \"object\"\n}", + "version": "replication.k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Replicated Secret", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/Stargate.json b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/Stargate.json new file mode 100644 index 00000000000..b86eb715dce --- /dev/null +++ b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/components/Stargate.json @@ -0,0 +1,193 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "Stargate", + "schema": "{\n \"description\": \"Stargate is the Schema for the stargates API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"Specification of the desired behavior of this Stargate resource.\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity is the affinity to apply to all the Stargate pods.\\nLeave nil to let the controller reuse the same affinity rules used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"allowStargateOnDataNodes\": {\n \"default\": false,\n \"description\": \"AllowStargateOnDataNodes allows Stargate pods to be scheduled on a worker node already hosting data pods for this\\ndatacenter. The default is false, which means that Stargate pods will be scheduled on separate worker nodes.\\nNote: if the datacenter pods have HostNetwork:true, then the Stargate pods will inherit of it, in which case it\\nis possible that Stargate nodes won't be allowed to sit on data nodes even if this property is set to true,\\nbecause of port conflicts on the same IP address.\",\n \"type\": \"boolean\"\n },\n \"auth\": {\n \"default\": true,\n \"description\": \"Whether to enable authentication for Stargate. The default is true; it is highly recommended to always leave\\nauthentication turned on, not only on Stargate nodes, but also on data nodes as well. Note that Stargate REST\\nAPIs are currently only accessible if authentication is enabled, and if the authenticator in use in the whole\\ncluster is PasswordAuthenticator. The usage of any other authenticator will cause the REST API to become\\ninaccessible, see https://github.com/stargate/stargate/issues/792 for more. Stargate CQL API however remains\\naccessible even if authentication is disabled in the cluster, or when a custom authenticator is being used.\",\n \"type\": \"boolean\"\n },\n \"authOptions\": {\n \"description\": \"Authentication options.\",\n \"properties\": {\n \"apiAuthMethod\": {\n \"default\": \"Table\",\n \"description\": \"The method to use for authenticating requests to the Stargate APIs. Stargate currently has\\ntwo authentication / authorization methods:\\n- Table: table-based;\\n- JWT: JSON web token (JWT)-based.\\nThe methods are mutually exclusive. The default method is Table.\",\n \"enum\": [\n \"Table\",\n \"JWT\"\n ],\n \"type\": \"string\"\n },\n \"providerUrl\": {\n \"description\": \"Required when using JWT authentication method, ignored otherwise.\",\n \"type\": \"string\"\n },\n \"tokenTtlSeconds\": {\n \"description\": \"The time-to-live in seconds of an API authentication token. Valid only for the Table\\nauthentication method. By default, the token persists for 30 minutes with a sliding window.\\nEach use of the token to authenticate resets the 30-minute window. A token created and used\\nafter 29 minutes will authenticate a request, but if 31 minutes passes before use, the token\\nwill no longer exist.\\nDefault is 1800 seconds (30 minutes).\",\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"cassandraConfigMapRef\": {\n \"description\": \"CassandraConfigMapRef is a reference to a ConfigMap that holds Cassandra configuration.\\nThe map should have a key named cassandra_yaml.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"cassandraEncryption\": {\n \"description\": \"CassandraEncryption groups together encryption stores that are passed to the Stargate pods, so\\nthat they can be mounted as volumes.\",\n \"properties\": {\n \"clientEncryptionStores\": {\n \"description\": \"Client encryption stores which are used by Cassandra and Reaper.\",\n \"properties\": {\n \"keystorePasswordSecretRef\": {\n \"description\": \"ref to the secret that contains the keystore password if password stored in different secret than keystoreSecretRef\\nif key isn't specified explicitly, \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"keystoreSecretRef\": {\n \"description\": \"ref to the secret that contains the keystore and optionally its password (which can also be specified through\\nthe keystorePasswordSecretRef field)\\nif keys are not specified, \\\"keystore\\\" entry and a \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"truststorePasswordSecretRef\": {\n \"description\": \"ref to the secret that contains the truststore password if password stored in different secret than keystoreSecretRef\\nif key isn't specified explicitly, \\\"truststore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"truststoreSecretRef\": {\n \"description\": \"ref to the secret that contains the truststore and optionally its password (which can also be specified through\\nthe truststorePasswordSecretRef field)\\nif keys are not specified explicitly, \\\"keystore\\\" entry and a \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"keystoreSecretRef\",\n \"truststoreSecretRef\"\n ],\n \"type\": \"object\"\n },\n \"serverEncryptionStores\": {\n \"description\": \"Internode encryption stores which are used by Cassandra and Stargate.\",\n \"properties\": {\n \"keystorePasswordSecretRef\": {\n \"description\": \"ref to the secret that contains the keystore password if password stored in different secret than keystoreSecretRef\\nif key isn't specified explicitly, \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"keystoreSecretRef\": {\n \"description\": \"ref to the secret that contains the keystore and optionally its password (which can also be specified through\\nthe keystorePasswordSecretRef field)\\nif keys are not specified, \\\"keystore\\\" entry and a \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"truststorePasswordSecretRef\": {\n \"description\": \"ref to the secret that contains the truststore password if password stored in different secret than keystoreSecretRef\\nif key isn't specified explicitly, \\\"truststore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"truststoreSecretRef\": {\n \"description\": \"ref to the secret that contains the truststore and optionally its password (which can also be specified through\\nthe truststorePasswordSecretRef field)\\nif keys are not specified explicitly, \\\"keystore\\\" entry and a \\\"keystore-password\\\" entry will be used\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the entry in the Secret resource's `data` field to be used.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"keystoreSecretRef\",\n \"truststoreSecretRef\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"containerImage\": {\n \"default\": {\n \"repository\": \"stargateio\",\n \"tag\": \"v1.0.77\"\n },\n \"description\": \"ContainerImage is the image characteristics to use for Stargate containers. Leave nil\\nto use a default image.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"datacenterRef\": {\n \"description\": \"DatacenterRef is the namespace-local reference of a CassandraDatacenter resource where\\nStargate should be deployed.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"heapSize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"default\": \"256Mi\",\n \"description\": \"HeapSize sets the JVM heap size to use for Stargate. If no Resources are specified, this\\nvalue will also be used to set a default memory request and limit for the Stargate pods:\\nthese will be set to HeapSize x2 and x4, respectively.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"livenessProbe\": {\n \"description\": \"LivenessProbe sets the Stargate liveness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"description\": \"labels and annotations for Stargate resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"labels/annotations that will be applied to all components\\ncreated by the CRD\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"pods\": {\n \"description\": \"labels/annotations for the pod components\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"description\": \"labels/annotations for the service component\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is an optional map of label keys and values to restrict the scheduling of Stargate nodes to workers\\nwith matching labels.\\nLeave nil to let the controller reuse the same node selectors used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector\",\n \"type\": \"object\"\n },\n \"racks\": {\n \"description\": \"Racks allow customizing Stargate characteristics for specific racks in the datacenter.\",\n \"items\": {\n \"description\": \"StargateRackTemplate defines custom rules for Stargate pods in a given rack.\\nThese rules will be merged with rules defined at datacenter level in a StargateDatacenterTemplate; rack-level rules\\nhave precedence over datacenter-level ones.\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity is the affinity to apply to all the Stargate pods.\\nLeave nil to let the controller reuse the same affinity rules used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"allowStargateOnDataNodes\": {\n \"default\": false,\n \"description\": \"AllowStargateOnDataNodes allows Stargate pods to be scheduled on a worker node already hosting data pods for this\\ndatacenter. The default is false, which means that Stargate pods will be scheduled on separate worker nodes.\\nNote: if the datacenter pods have HostNetwork:true, then the Stargate pods will inherit of it, in which case it\\nis possible that Stargate nodes won't be allowed to sit on data nodes even if this property is set to true,\\nbecause of port conflicts on the same IP address.\",\n \"type\": \"boolean\"\n },\n \"authOptions\": {\n \"description\": \"Authentication options.\",\n \"properties\": {\n \"apiAuthMethod\": {\n \"default\": \"Table\",\n \"description\": \"The method to use for authenticating requests to the Stargate APIs. Stargate currently has\\ntwo authentication / authorization methods:\\n- Table: table-based;\\n- JWT: JSON web token (JWT)-based.\\nThe methods are mutually exclusive. The default method is Table.\",\n \"enum\": [\n \"Table\",\n \"JWT\"\n ],\n \"type\": \"string\"\n },\n \"providerUrl\": {\n \"description\": \"Required when using JWT authentication method, ignored otherwise.\",\n \"type\": \"string\"\n },\n \"tokenTtlSeconds\": {\n \"description\": \"The time-to-live in seconds of an API authentication token. Valid only for the Table\\nauthentication method. By default, the token persists for 30 minutes with a sliding window.\\nEach use of the token to authenticate resets the 30-minute window. A token created and used\\nafter 29 minutes will authenticate a request, but if 31 minutes passes before use, the token\\nwill no longer exist.\\nDefault is 1800 seconds (30 minutes).\",\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"cassandraConfigMapRef\": {\n \"description\": \"CassandraConfigMapRef is a reference to a ConfigMap that holds Cassandra configuration.\\nThe map should have a key named cassandra_yaml.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"containerImage\": {\n \"default\": {\n \"repository\": \"stargateio\",\n \"tag\": \"v1.0.77\"\n },\n \"description\": \"ContainerImage is the image characteristics to use for Stargate containers. Leave nil\\nto use a default image.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The image name to use.\",\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"description\": \"The image pull policy to use. Defaults to \\\"Always\\\" if the tag is \\\"latest\\\", otherwise to \\\"IfNotPresent\\\".\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\",\n \"Never\"\n ],\n \"type\": \"string\"\n },\n \"pullSecretRef\": {\n \"description\": \"The secret to use when pulling the image from private repositories. If specified, this secret will be passed to\\nindividual puller implementations for them to use. For example, in the case of Docker, only DockerConfig type\\nsecrets are honored. More info:\\nhttps://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"registry\": {\n \"description\": \"The Docker registry to use. Defaults to \\\"docker.io\\\", the official Docker Hub.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"The Docker repository to use.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"default\": \"latest\",\n \"description\": \"The image tag to use. Defaults to \\\"latest\\\".\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"heapSize\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"default\": \"256Mi\",\n \"description\": \"HeapSize sets the JVM heap size to use for Stargate. If no Resources are specified, this\\nvalue will also be used to set a default memory request and limit for the Stargate pods:\\nthese will be set to HeapSize x2 and x4, respectively.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"livenessProbe\": {\n \"description\": \"LivenessProbe sets the Stargate liveness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"description\": \"labels and annotations for Stargate resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"labels/annotations that will be applied to all components\\ncreated by the CRD\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"pods\": {\n \"description\": \"labels/annotations for the pod components\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"description\": \"labels/annotations for the service component\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name is the rack name. It must correspond to an existing rack name in the CassandraDatacenter resource where\\nStargate is being deployed, otherwise it will be ignored.\",\n \"minLength\": 2,\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is an optional map of label keys and values to restrict the scheduling of Stargate nodes to workers\\nwith matching labels.\\nLeave nil to let the controller reuse the same node selectors used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector\",\n \"type\": \"object\"\n },\n \"readinessProbe\": {\n \"description\": \"ReadinessProbe sets the Stargate readiness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Resources is the Kubernetes resource requests and limits to apply, per Stargate pod. Leave\\nnil to use defaults.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"secretsProvider\": {\n \"default\": \"internal\",\n \"description\": \"SecretsProvider defines whether the secrets used for credentials and certs will be backed\\nby an external secret backend. This moves the responsibility of generating and storing\\nsecrets from the operators to the user and will rely on a mutating webhook to inject\\nthe secrets into the necessary resources\",\n \"enum\": [\n \"internal\",\n \"external\"\n ],\n \"type\": \"string\"\n },\n \"serviceAccount\": {\n \"default\": \"default\",\n \"description\": \"ServiceAccount is the service account name to use for Stargate pods.\",\n \"type\": \"string\"\n },\n \"telemetry\": {\n \"description\": \"Telemetry defines the desired telemetry integrations to deploy targeting the Stargate pods for all DCs in this cluster\\n(unless overridden by DC specific settings)\",\n \"properties\": {\n \"cassandra\": {\n \"properties\": {\n \"endpoint\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"relabels\": {\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion.\\nIt defines `\\u003cmetric_relabel_configs\\u003e`-section of Prometheus configuration.\\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"mcac\": {\n \"properties\": {\n \"enabled\": {\n \"description\": \"enabled sets whether MCAC (legacy metrics endpoint) is enabled.\\nThis is considered true by default.\",\n \"type\": \"boolean\"\n },\n \"metricFilters\": {\n \"description\": \"MetricFilters allows passing filters to MCAC in order to reduce the amount of extracted metrics.\\nNot setting this field will result in the default filters being used:\\n- \\\"deny:org.apache.cassandra.metrics.Table\\\"\\n- \\\"deny:org.apache.cassandra.metrics.table\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_ss_table_count\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.LiveSSTableCount\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_disk_space_used\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.LiveDiskSpaceUsed\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Pending\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Memtable\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Compaction\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.read\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.write\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.range\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.coordinator\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.dropped_mutations\\\"\\nSetting it to an empty list will result in all metrics being extracted.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"prometheus\": {\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"CommonLabels are applied to all serviceMonitors created.\",\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enable the creation of Prometheus serviceMonitors for this resource (Cassandra or Stargate).\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"vector\": {\n \"properties\": {\n \"components\": {\n \"properties\": {\n \"sinks\": {\n \"description\": \"Sinks is the list of sinks to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the sink.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the sink.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the sink.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sources\": {\n \"description\": \"Sources is the list of sources to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the source.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of the source.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"transforms\": {\n \"description\": \"Transforms is the list of transforms to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the transform.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the transform.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the transform.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enabled enables the Vector agent for this resource (Cassandra, Reaper or Stargate).\\nEnabling the vector agent will inject a sidecar container into the pod.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image is the name of the Vector image to use. If not set, the default image will be used.\\nkube:default=\\\"timberio/vector:0.26.0-alpine\\\"\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resources is the resource requirements for the Vector agent.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrapeInterval\": {\n \"description\": \"ScrapeInterval is the interval at which the Vector agent will scrape the metrics endpoint.\\nUse values like 30s, 1m, 5m.\\nkube:default=30s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations are tolerations to apply to the Stargate pods.\\nLeave nil to let the controller reuse the same tolerations used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readinessProbe\": {\n \"description\": \"ReadinessProbe sets the Stargate readiness probe. Leave nil to use defaults.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Resources is the Kubernetes resource requests and limits to apply, per Stargate pod. Leave\\nnil to use defaults.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"secretsProvider\": {\n \"default\": \"internal\",\n \"description\": \"SecretsProvider defines whether the secrets used for credentials and certs will be backed\\nby an external secret backend. This moves the responsibility of generating and storing\\nsecrets from the operators to the user and will rely on a mutating webhook to inject\\nthe secrets into the necessary resources\",\n \"enum\": [\n \"internal\",\n \"external\"\n ],\n \"type\": \"string\"\n },\n \"serviceAccount\": {\n \"default\": \"default\",\n \"description\": \"ServiceAccount is the service account name to use for Stargate pods.\",\n \"type\": \"string\"\n },\n \"size\": {\n \"default\": 1,\n \"description\": \"Size is the number of Stargate instances to deploy in each datacenter. They will be spread evenly across racks.\",\n \"format\": \"int32\",\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"telemetry\": {\n \"description\": \"Telemetry defines the desired telemetry integrations to deploy targeting the Stargate pods for all DCs in this cluster\\n(unless overridden by DC specific settings)\",\n \"properties\": {\n \"cassandra\": {\n \"properties\": {\n \"endpoint\": {\n \"properties\": {\n \"address\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"relabels\": {\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion.\\nIt defines `\\u003cmetric_relabel_configs\\u003e`-section of Prometheus configuration.\\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"mcac\": {\n \"properties\": {\n \"enabled\": {\n \"description\": \"enabled sets whether MCAC (legacy metrics endpoint) is enabled.\\nThis is considered true by default.\",\n \"type\": \"boolean\"\n },\n \"metricFilters\": {\n \"description\": \"MetricFilters allows passing filters to MCAC in order to reduce the amount of extracted metrics.\\nNot setting this field will result in the default filters being used:\\n- \\\"deny:org.apache.cassandra.metrics.Table\\\"\\n- \\\"deny:org.apache.cassandra.metrics.table\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_ss_table_count\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.LiveSSTableCount\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.live_disk_space_used\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.LiveDiskSpaceUsed\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Pending\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Memtable\\\"\\n- \\\"allow:org.apache.cassandra.metrics.Table.Compaction\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.read\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.write\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.range\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.coordinator\\\"\\n- \\\"allow:org.apache.cassandra.metrics.table.dropped_mutations\\\"\\nSetting it to an empty list will result in all metrics being extracted.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"prometheus\": {\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"CommonLabels are applied to all serviceMonitors created.\",\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enable the creation of Prometheus serviceMonitors for this resource (Cassandra or Stargate).\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"vector\": {\n \"properties\": {\n \"components\": {\n \"properties\": {\n \"sinks\": {\n \"description\": \"Sinks is the list of sinks to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the sink.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the sink.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the sink.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sources\": {\n \"description\": \"Sources is the list of sources to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the source.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of the source.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"transforms\": {\n \"description\": \"Transforms is the list of transforms to use for the Vector agent.\",\n \"items\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config is the configuration for the transform.\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"Inputs is the list of inputs for the transform.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name is the name of the transform.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the transform.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"description\": \"Enabled enables the Vector agent for this resource (Cassandra, Reaper or Stargate).\\nEnabling the vector agent will inject a sidecar container into the pod.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image is the name of the Vector image to use. If not set, the default image will be used.\\nkube:default=\\\"timberio/vector:0.26.0-alpine\\\"\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resources is the resource requirements for the Vector agent.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrapeInterval\": {\n \"description\": \"ScrapeInterval is the interval at which the Vector agent will scrape the metrics endpoint.\\nUse values like 30s, 1m, 5m.\\nkube:default=30s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations are tolerations to apply to the Stargate pods.\\nLeave nil to let the controller reuse the same tolerations used for data pods in this datacenter, if any.\\nSee https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"datacenterRef\",\n \"size\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Stargate\",\n \"type\": \"object\"\n}", + "version": "stargate.k8ssandra.io/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Stargate", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz" + }, + "model": { + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://helm.k8ssandra.io/stable/k8ssandra-operator-1.19.0-20240830180503-7eca0003.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/model.json b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/model.json new file mode 100644 index 00000000000..5f678919cec --- /dev/null +++ b/server/meshmodel/k8ssandra/1.19.0-20240830180503-7eca0003/v1.0.0/model.json @@ -0,0 +1,42 @@ +{ + "category": { + "name": "App Definition and Development" + }, + "displayName": "K8ssandra", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "capabilities": null, + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "1.19.0-20240830180503-7eca0003" + }, + "name": "k8ssandra", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Database", + "version": "v1.0.0", + "components": null, + "relationships": null + } \ No newline at end of file diff --git a/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/CrunchyBridgeCluster.json b/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/CrunchyBridgeCluster.json new file mode 100644 index 00000000000..9ae17fd3ba3 --- /dev/null +++ b/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/CrunchyBridgeCluster.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "CrunchyBridgeCluster", + "schema": "{\n \"description\": \"CrunchyBridgeCluster is the Schema for the crunchybridgeclusters API\\nThis Custom Resource requires enabling CrunchyBridgeClusters feature gate\",\n \"properties\": {\n \"spec\": {\n \"description\": \"CrunchyBridgeClusterSpec defines the desired state of CrunchyBridgeCluster\\nto be managed by Crunchy Data Bridge\",\n \"properties\": {\n \"clusterName\": {\n \"description\": \"The name of the cluster\\n---\\nAccording to Bridge API/GUI errors,\\n\\\"Field name should be between 5 and 50 characters in length, containing only unicode characters, unicode numbers, hyphens, spaces, or underscores, and starting with a character\\\", and ending with a character or number.\",\n \"maxLength\": 50,\n \"minLength\": 5,\n \"pattern\": \"^[A-Za-z][A-Za-z0-9\\\\-_ ]*[A-Za-z0-9]$\",\n \"type\": \"string\"\n },\n \"isHa\": {\n \"description\": \"Whether the cluster is high availability,\\nmeaning that it has a secondary it can fail over to quickly\\nin case the primary becomes unavailable.\",\n \"type\": \"boolean\"\n },\n \"majorVersion\": {\n \"description\": \"The ID of the cluster's major Postgres version.\\nCurrently Bridge offers 13-16\",\n \"maximum\": 16,\n \"minimum\": 13,\n \"type\": \"integer\"\n },\n \"metadata\": {\n \"description\": \"Metadata contains metadata for custom resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"plan\": {\n \"description\": \"The ID of the cluster's plan. Determines instance, CPU, and memory.\",\n \"type\": \"string\"\n },\n \"provider\": {\n \"description\": \"The cloud provider where the cluster is located.\\nCurrently Bridge offers aws, azure, and gcp only\",\n \"enum\": [\n \"aws\",\n \"azure\",\n \"gcp\"\n ],\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"immutable\",\n \"rule\": \"self == oldSelf\"\n }\n ]\n },\n \"region\": {\n \"description\": \"The provider region where the cluster is located.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"immutable\",\n \"rule\": \"self == oldSelf\"\n }\n ]\n },\n \"roles\": {\n \"description\": \"Roles for which to create Secrets that contain their credentials which\\nare retrieved from the Bridge API. An empty list creates no role secrets.\\nRemoving a role from this list does NOT drop the role nor revoke their\\naccess, but it will delete that role's secret from the kube cluster.\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the role within Crunchy Bridge.\\nMore info: https://docs.crunchybridge.com/concepts/users\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"The name of the Secret that will hold the role credentials.\",\n \"maxLength\": 253,\n \"pattern\": \"^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"secretName\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"secret\": {\n \"description\": \"The name of the secret containing the API key and team id\",\n \"type\": \"string\"\n },\n \"storage\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"The amount of storage available to the cluster in gigabytes.\\nThe amount must be an integer, followed by Gi (gibibytes) or G (gigabytes) to match Kubernetes conventions.\\nIf the amount is given in Gi, we round to the nearest G value.\\nThe minimum value allowed by Bridge is 10 GB.\\nThe maximum value allowed by Bridge is 65535 GB.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"clusterName\",\n \"isHa\",\n \"majorVersion\",\n \"plan\",\n \"provider\",\n \"region\",\n \"storage\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Crunchy Bridge Cluster\",\n \"type\": \"object\"\n}", + "version": "postgres-operator.crunchydata.com/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "Crunchy Bridge Cluster", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/percona/percona-helm-charts/releases/download/pg-operator-2.4.2/pg-operator-2.4.2.tgz" + }, + "model": { + "category": { + "name": "Database" + }, + "displayName": "Percona Postgres Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#336791", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/percona/percona-helm-charts/releases/download/pg-operator-2.4.2/pg-operator-2.4.2.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 432.071 445.383\" xml:space=\"preserve\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"orginal\" style=\"fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;\"\u003e\n\u0026#x9;\u003c/g\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_x0020_3\" style=\"fill-rule:nonzero;clip-rule:nonzero;fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#000000;stroke:#000000;stroke-width:37.3953;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M323.205,324.227c2.833-23.601,1.984-27.062,19.563-23.239l4.463,0.392c13.517,0.615,31.199-2.174,41.587-7c22.362-10.376,35.622-27.7,13.572-23.148c-50.297,10.376-53.755-6.655-53.755-6.655c53.111-78.803,75.313-178.836,56.149-203.322 C352.514-5.534,262.036,26.049,260.522,26.869l-0.482,0.089c-9.938-2.062-21.06-3.294-33.554-3.496c-22.761-0.374-40.032,5.967-53.133,15.904c0,0-161.408-66.498-153.899,83.628c1.597,31.936,45.777,241.655,98.47,178.31 c19.259-23.163,37.871-42.748,37.871-42.748c9.242,6.14,20.307,9.272,31.912,8.147l0.897-0.765c-0.281,2.876-0.157,5.689,0.359,9.019c-13.572,15.167-9.584,17.83-36.723,23.416c-27.457,5.659-11.326,15.734-0.797,18.367c12.768,3.193,42.305,7.716,62.268-20.224 l-0.795,3.188c5.325,4.26,4.965,30.619,5.72,49.452c0.756,18.834,2.017,36.409,5.856,46.771c3.839,10.36,8.369,37.05,44.036,29.406c29.809-6.388,52.6-15.582,54.677-101.107\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#336791;stroke:none;\" d=\"M402.395,271.23c-50.302,10.376-53.76-6.655-53.76-6.655c53.111-78.808,75.313-178.843,56.153-203.326c-52.27-66.785-142.752-35.2-144.262-34.38l-0.486,0.087c-9.938-2.063-21.06-3.292-33.56-3.496c-22.761-0.373-40.026,5.967-53.127,15.902 c0,0-161.411-66.495-153.904,83.63c1.597,31.938,45.776,241.657,98.471,178.312c19.26-23.163,37.869-42.748,37.869-42.748c9.243,6.14,20.308,9.272,31.908,8.147l0.901-0.765c-0.28,2.876-0.152,5.689,0.361,9.019c-13.575,15.167-9.586,17.83-36.723,23.416 c-27.459,5.659-11.328,15.734-0.796,18.367c12.768,3.193,42.307,7.716,62.266-20.224l-0.796,3.188c5.319,4.26,9.054,27.711,8.428,48.969c-0.626,21.259-1.044,35.854,3.147,47.254c4.191,11.4,8.368,37.05,44.042,29.406c29.809-6.388,45.256-22.942,47.405-50.555 c1.525-19.631,4.976-16.729,5.194-34.28l2.768-8.309c3.192-26.611,0.507-35.196,18.872-31.203l4.463,0.392c13.517,0.615,31.208-2.174,41.591-7c22.358-10.376,35.618-27.7,13.573-23.148z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M215.866,286.484c-1.385,49.516,0.348,99.377,5.193,111.495c4.848,12.118,15.223,35.688,50.9,28.045c29.806-6.39,40.651-18.756,45.357-46.051c3.466-20.082,10.148-75.854,11.005-87.281\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M173.104,38.256c0,0-161.521-66.016-154.012,84.109c1.597,31.938,45.779,241.664,98.473,178.316c19.256-23.166,36.671-41.335,36.671-41.335\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M260.349,26.207c-5.591,1.753,89.848-34.889,144.087,34.417c19.159,24.484-3.043,124.519-56.153,203.329\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke-linejoin:bevel;\" d=\"M348.282,263.953c0,0,3.461,17.036,53.764,6.653c22.04-4.552,8.776,12.774-13.577,23.155c-18.345,8.514-59.474,10.696-60.146-1.069c-1.729-30.355,21.647-21.133,19.96-28.739c-1.525-6.85-11.979-13.573-18.894-30.338 c-6.037-14.633-82.796-126.849,21.287-110.183c3.813-0.789-27.146-99.002-124.553-100.599c-97.385-1.597-94.19,119.762-94.19,119.762\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M188.604,274.334c-13.577,15.166-9.584,17.829-36.723,23.417c-27.459,5.66-11.326,15.733-0.797,18.365c12.768,3.195,42.307,7.718,62.266-20.229c6.078-8.509-0.036-22.086-8.385-25.547c-4.034-1.671-9.428-3.765-16.361,3.994z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M187.715,274.069c-1.368-8.917,2.93-19.528,7.536-31.942c6.922-18.626,22.893-37.255,10.117-96.339c-9.523-44.029-73.396-9.163-73.436-3.193c-0.039,5.968,2.889,30.26-1.067,58.548c-5.162,36.913,23.488,68.132,56.479,64.938\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#FFFFFF;stroke-width:4.155;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M172.517,141.7c-0.288,2.039,3.733,7.48,8.976,8.207c5.234,0.73,9.714-3.522,9.998-5.559c0.284-2.039-3.732-4.285-8.977-5.015c-5.237-0.731-9.719,0.333-9.996,2.367z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#FFFFFF;stroke-width:2.0775;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M331.941,137.543c0.284,2.039-3.732,7.48-8.976,8.207c-5.238,0.73-9.718-3.522-10.005-5.559c-0.277-2.039,3.74-4.285,8.979-5.015c5.239-0.73,9.718,0.333,10.002,2.368z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M350.676,123.432c0.863,15.994-3.445,26.888-3.988,43.914c-0.804,24.748,11.799,53.074-7.191,81.435\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke-width:3;\" d=\"M0,60.232\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 432.1 445.4\" style=\"enable-background:new 0 0 432.1 445.4;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n .st0{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;}\n .st1{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:bevel;}\n .st2{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:4.155;}\n .st3{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:2.0775;}\n .st4{fill:none;stroke:#FFFFFF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;}\n\u003c/style\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"orginal\"\u003e\n\u003c/g\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_x0020_3\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M215.9,286.5c-1.4,49.5,0.3,99.4,5.2,111.5c4.8,12.1,15.2,35.7,50.9,28c29.8-6.4,40.7-18.8,45.4-46.1\u0026#xA; c3.5-20.1,10.1-75.9,11-87.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M173.1,38.3c0,0-161.5-66-154,84.1c1.6,31.9,45.8,241.7,98.5,178.3c19.3-23.2,36.7-41.3,36.7-41.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M260.3,26.2c-5.6,1.8,89.8-34.9,144.1,34.4c19.2,24.5-3,124.5-56.2,203.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st1\" d=\"M348.3,264c0,0,3.5,17,53.8,6.7c22-4.6,8.8,12.8-13.6,23.2c-18.3,8.5-59.5,10.7-60.1-1.1\u0026#xA; C326.6,262.3,350,271.6,348.3,264c-1.5-6.9-12-13.6-18.9-30.3c-6-14.6-82.8-126.8,21.3-110.2c3.8-0.8-27.1-99-124.6-100.6\u0026#xA; c-97.4-1.6-94.2,119.8-94.2,119.8\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M188.6,274.3c-13.6,15.2-9.6,17.8-36.7,23.4c-27.5,5.7-11.3,15.7-0.8,18.4c12.8,3.2,42.3,7.7,62.3-20.2\u0026#xA; c6.1-8.5,0-22.1-8.4-25.5C200.9,268.7,195.5,266.6,188.6,274.3L188.6,274.3z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M187.7,274.1c-1.4-8.9,2.9-19.5,7.5-31.9c6.9-18.6,22.9-37.3,10.1-96.3c-9.5-44-73.4-9.2-73.4-3.2\u0026#xA; c0,6,2.9,30.3-1.1,58.5c-5.2,36.9,23.5,68.1,56.5,64.9\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st2\" d=\"M172.5,141.7c-0.3,2,3.7,7.5,9,8.2c5.2,0.7,9.7-3.5,10-5.6c0.3-2-3.7-4.3-9-5\u0026#xA; C177.3,138.6,172.8,139.7,172.5,141.7L172.5,141.7z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st3\" d=\"M331.9,137.5c0.3,2-3.7,7.5-9,8.2c-5.2,0.7-9.7-3.5-10-5.6c-0.3-2,3.7-4.3,9-5S331.7,135.5,331.9,137.5\u0026#xA; L331.9,137.5z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M350.7,123.4c0.9,16-3.4,26.9-4,43.9c-0.8,24.7,11.8,53.1-7.2,81.4\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st4\" d=\"M0,60.2\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003c/svg\u003e" + }, + "model": { + "version": "2.4.2" + }, + "name": "pg-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "App Definition and Development", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#336791", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"432.071pt\" height=\"445.383pt\" viewBox=\"0 0 432.071 445.383\" xml:space=\"preserve\"\u003e\n\u003cg id=\"orginal\" style=\"fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;\"\u003e\n\t\u003c/g\u003e\n\u003cg id=\"Layer_x0020_3\" style=\"fill-rule:nonzero;clip-rule:nonzero;fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;\"\u003e\n\u003cpath style=\"fill:#000000;stroke:#000000;stroke-width:37.3953;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M323.205,324.227c2.833-23.601,1.984-27.062,19.563-23.239l4.463,0.392c13.517,0.615,31.199-2.174,41.587-7c22.362-10.376,35.622-27.7,13.572-23.148c-50.297,10.376-53.755-6.655-53.755-6.655c53.111-78.803,75.313-178.836,56.149-203.322 C352.514-5.534,262.036,26.049,260.522,26.869l-0.482,0.089c-9.938-2.062-21.06-3.294-33.554-3.496c-22.761-0.374-40.032,5.967-53.133,15.904c0,0-161.408-66.498-153.899,83.628c1.597,31.936,45.777,241.655,98.47,178.31 c19.259-23.163,37.871-42.748,37.871-42.748c9.242,6.14,20.307,9.272,31.912,8.147l0.897-0.765c-0.281,2.876-0.157,5.689,0.359,9.019c-13.572,15.167-9.584,17.83-36.723,23.416c-27.457,5.659-11.326,15.734-0.797,18.367c12.768,3.193,42.305,7.716,62.268-20.224 l-0.795,3.188c5.325,4.26,4.965,30.619,5.72,49.452c0.756,18.834,2.017,36.409,5.856,46.771c3.839,10.36,8.369,37.05,44.036,29.406c29.809-6.388,52.6-15.582,54.677-101.107\"/\u003e\n\u003cpath style=\"fill:#336791;stroke:none;\" d=\"M402.395,271.23c-50.302,10.376-53.76-6.655-53.76-6.655c53.111-78.808,75.313-178.843,56.153-203.326c-52.27-66.785-142.752-35.2-144.262-34.38l-0.486,0.087c-9.938-2.063-21.06-3.292-33.56-3.496c-22.761-0.373-40.026,5.967-53.127,15.902 c0,0-161.411-66.495-153.904,83.63c1.597,31.938,45.776,241.657,98.471,178.312c19.26-23.163,37.869-42.748,37.869-42.748c9.243,6.14,20.308,9.272,31.908,8.147l0.901-0.765c-0.28,2.876-0.152,5.689,0.361,9.019c-13.575,15.167-9.586,17.83-36.723,23.416 c-27.459,5.659-11.328,15.734-0.796,18.367c12.768,3.193,42.307,7.716,62.266-20.224l-0.796,3.188c5.319,4.26,9.054,27.711,8.428,48.969c-0.626,21.259-1.044,35.854,3.147,47.254c4.191,11.4,8.368,37.05,44.042,29.406c29.809-6.388,45.256-22.942,47.405-50.555 c1.525-19.631,4.976-16.729,5.194-34.28l2.768-8.309c3.192-26.611,0.507-35.196,18.872-31.203l4.463,0.392c13.517,0.615,31.208-2.174,41.591-7c22.358-10.376,35.618-27.7,13.573-23.148z\"/\u003e\n\u003cpath d=\"M215.866,286.484c-1.385,49.516,0.348,99.377,5.193,111.495c4.848,12.118,15.223,35.688,50.9,28.045c29.806-6.39,40.651-18.756,45.357-46.051c3.466-20.082,10.148-75.854,11.005-87.281\"/\u003e\n\u003cpath d=\"M173.104,38.256c0,0-161.521-66.016-154.012,84.109c1.597,31.938,45.779,241.664,98.473,178.316c19.256-23.166,36.671-41.335,36.671-41.335\"/\u003e\n\u003cpath d=\"M260.349,26.207c-5.591,1.753,89.848-34.889,144.087,34.417c19.159,24.484-3.043,124.519-56.153,203.329\"/\u003e\n\u003cpath style=\"stroke-linejoin:bevel;\" d=\"M348.282,263.953c0,0,3.461,17.036,53.764,6.653c22.04-4.552,8.776,12.774-13.577,23.155c-18.345,8.514-59.474,10.696-60.146-1.069c-1.729-30.355,21.647-21.133,19.96-28.739c-1.525-6.85-11.979-13.573-18.894-30.338 c-6.037-14.633-82.796-126.849,21.287-110.183c3.813-0.789-27.146-99.002-124.553-100.599c-97.385-1.597-94.19,119.762-94.19,119.762\"/\u003e\n\u003cpath d=\"M188.604,274.334c-13.577,15.166-9.584,17.829-36.723,23.417c-27.459,5.66-11.326,15.733-0.797,18.365c12.768,3.195,42.307,7.718,62.266-20.229c6.078-8.509-0.036-22.086-8.385-25.547c-4.034-1.671-9.428-3.765-16.361,3.994z\"/\u003e\n\u003cpath d=\"M187.715,274.069c-1.368-8.917,2.93-19.528,7.536-31.942c6.922-18.626,22.893-37.255,10.117-96.339c-9.523-44.029-73.396-9.163-73.436-3.193c-0.039,5.968,2.889,30.26-1.067,58.548c-5.162,36.913,23.488,68.132,56.479,64.938\"/\u003e\n\u003cpath style=\"fill:#FFFFFF;stroke-width:4.155;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M172.517,141.7c-0.288,2.039,3.733,7.48,8.976,8.207c5.234,0.73,9.714-3.522,9.998-5.559c0.284-2.039-3.732-4.285-8.977-5.015c-5.237-0.731-9.719,0.333-9.996,2.367z\"/\u003e\n\u003cpath style=\"fill:#FFFFFF;stroke-width:2.0775;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M331.941,137.543c0.284,2.039-3.732,7.48-8.976,8.207c-5.238,0.73-9.718-3.522-10.005-5.559c-0.277-2.039,3.74-4.285,8.979-5.015c5.239-0.73,9.718,0.333,10.002,2.368z\"/\u003e\n\u003cpath d=\"M350.676,123.432c0.863,15.994-3.445,26.888-3.988,43.914c-0.804,24.748,11.799,53.074-7.191,81.435\"/\u003e\n\u003cpath style=\"stroke-width:3;\" d=\"M0,60.232\"/\u003e\n\u003c/g\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 432.1 445.4\" style=\"enable-background:new 0 0 432.1 445.4;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n .st0{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;}\n .st1{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:bevel;}\n .st2{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:4.155;}\n .st3{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:2.0775;}\n .st4{fill:none;stroke:#FFFFFF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;}\n\u003c/style\u003e\n\u003cg id=\"orginal\"\u003e\n\u003c/g\u003e\n\u003cg id=\"Layer_x0020_3\"\u003e\n \u003cpath class=\"st0\" d=\"M215.9,286.5c-1.4,49.5,0.3,99.4,5.2,111.5c4.8,12.1,15.2,35.7,50.9,28c29.8-6.4,40.7-18.8,45.4-46.1\n c3.5-20.1,10.1-75.9,11-87.3\"/\u003e\n \u003cpath class=\"st0\" d=\"M173.1,38.3c0,0-161.5-66-154,84.1c1.6,31.9,45.8,241.7,98.5,178.3c19.3-23.2,36.7-41.3,36.7-41.3\"/\u003e\n \u003cpath class=\"st0\" d=\"M260.3,26.2c-5.6,1.8,89.8-34.9,144.1,34.4c19.2,24.5-3,124.5-56.2,203.3\"/\u003e\n \u003cpath class=\"st1\" d=\"M348.3,264c0,0,3.5,17,53.8,6.7c22-4.6,8.8,12.8-13.6,23.2c-18.3,8.5-59.5,10.7-60.1-1.1\n C326.6,262.3,350,271.6,348.3,264c-1.5-6.9-12-13.6-18.9-30.3c-6-14.6-82.8-126.8,21.3-110.2c3.8-0.8-27.1-99-124.6-100.6\n c-97.4-1.6-94.2,119.8-94.2,119.8\"/\u003e\n \u003cpath class=\"st0\" d=\"M188.6,274.3c-13.6,15.2-9.6,17.8-36.7,23.4c-27.5,5.7-11.3,15.7-0.8,18.4c12.8,3.2,42.3,7.7,62.3-20.2\n c6.1-8.5,0-22.1-8.4-25.5C200.9,268.7,195.5,266.6,188.6,274.3L188.6,274.3z\"/\u003e\n \u003cpath class=\"st0\" d=\"M187.7,274.1c-1.4-8.9,2.9-19.5,7.5-31.9c6.9-18.6,22.9-37.3,10.1-96.3c-9.5-44-73.4-9.2-73.4-3.2\n c0,6,2.9,30.3-1.1,58.5c-5.2,36.9,23.5,68.1,56.5,64.9\"/\u003e\n \u003cpath class=\"st2\" d=\"M172.5,141.7c-0.3,2,3.7,7.5,9,8.2c5.2,0.7,9.7-3.5,10-5.6c0.3-2-3.7-4.3-9-5\n C177.3,138.6,172.8,139.7,172.5,141.7L172.5,141.7z\"/\u003e\n \u003cpath class=\"st3\" d=\"M331.9,137.5c0.3,2-3.7,7.5-9,8.2c-5.2,0.7-9.7-3.5-10-5.6c-0.3-2,3.7-4.3,9-5S331.7,135.5,331.9,137.5\n L331.9,137.5z\"/\u003e\n \u003cpath class=\"st0\" d=\"M350.7,123.4c0.9,16-3.4,26.9-4,43.9c-0.8,24.7,11.8,53.1-7.2,81.4\"/\u003e\n \u003cpath class=\"st4\" d=\"M0,60.2\"/\u003e\n\u003c/g\u003e\n\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PGAdmin.json b/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PGAdmin.json new file mode 100644 index 00000000000..b6752bd1c17 --- /dev/null +++ b/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PGAdmin.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "PGAdmin", + "schema": "{\n \"description\": \"PGAdmin is the Schema for the pgadmins API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"PGAdminSpec defines the desired state of PGAdmin\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Scheduling constraints of the PGAdmin pod.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"config\": {\n \"description\": \"Configuration settings for the pgAdmin process. Changes to any of these\\nvalues will be loaded without validation. Be careful, as\\nyou may put pgAdmin into an unusable state.\",\n \"properties\": {\n \"files\": {\n \"description\": \"Files allows the user to mount projected volumes into the pgAdmin\\ncontainer so that files can be referenced by pgAdmin as needed.\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"ldapBindPassword\": {\n \"description\": \"A Secret containing the value for the LDAP_BIND_PASSWORD setting.\\nMore info: https://www.pgadmin.org/docs/pgadmin4/latest/ldap.html\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"settings\": {\n \"description\": \"Settings for the pgAdmin server process. Keys should be uppercase and\\nvalues must be constants.\\nMore info: https://www.pgadmin.org/docs/pgadmin4/latest/config_py.html\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dataVolumeClaimSpec\": {\n \"description\": \"Defines a PersistentVolumeClaim for pgAdmin data.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"image\": {\n \"description\": \"The image name to use for pgAdmin instance.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"ImagePullPolicy is used to determine when Kubernetes will attempt to\\npull (download) container images.\\nMore info: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\",\n \"enum\": [\n \"Always\",\n \"Never\",\n \"IfNotPresent\"\n ],\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"The image pull secrets used to pull from a private registry.\\nChanging this value causes all running PGAdmin pods to restart.\\nhttps://k8s.io/docs/tasks/configure-pod-container/pull-image-private-registry/\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"metadata\": {\n \"description\": \"Metadata contains metadata for custom resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class name for the PGAdmin pod. Changing this\\nvalue causes PGAdmin pod to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resource requirements for the PGAdmin container.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serverGroups\": {\n \"description\": \"ServerGroups for importing PostgresClusters to pgAdmin.\\nTo create a pgAdmin with no selectors, leave this field empty.\\nA pgAdmin created with no `ServerGroups` will not automatically\\nadd any servers through discovery. PostgresClusters can still be\\nadded manually.\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"description\": \"The name for the ServerGroup in pgAdmin.\\nMust be unique in the pgAdmin's ServerGroups since it becomes the ServerGroup name in pgAdmin.\",\n \"type\": \"string\"\n },\n \"postgresClusterSelector\": {\n \"description\": \"PostgresClusterSelector selects clusters to dynamically add to pgAdmin by matching labels.\\nAn empty selector like `{}` will select ALL clusters in the namespace.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"name\",\n \"postgresClusterSelector\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of the PGAdmin pod.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"dataVolumeClaimSpec\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"PG Admin\",\n \"type\": \"object\"\n}", + "version": "postgres-operator.crunchydata.com/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "PG Admin", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/percona/percona-helm-charts/releases/download/pg-operator-2.4.2/pg-operator-2.4.2.tgz" + }, + "model": { + "category": { + "name": "Database" + }, + "displayName": "Percona Postgres Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#336791", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/percona/percona-helm-charts/releases/download/pg-operator-2.4.2/pg-operator-2.4.2.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 432.071 445.383\" xml:space=\"preserve\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"orginal\" style=\"fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;\"\u003e\n\u0026#x9;\u003c/g\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_x0020_3\" style=\"fill-rule:nonzero;clip-rule:nonzero;fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#000000;stroke:#000000;stroke-width:37.3953;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M323.205,324.227c2.833-23.601,1.984-27.062,19.563-23.239l4.463,0.392c13.517,0.615,31.199-2.174,41.587-7c22.362-10.376,35.622-27.7,13.572-23.148c-50.297,10.376-53.755-6.655-53.755-6.655c53.111-78.803,75.313-178.836,56.149-203.322 C352.514-5.534,262.036,26.049,260.522,26.869l-0.482,0.089c-9.938-2.062-21.06-3.294-33.554-3.496c-22.761-0.374-40.032,5.967-53.133,15.904c0,0-161.408-66.498-153.899,83.628c1.597,31.936,45.777,241.655,98.47,178.31 c19.259-23.163,37.871-42.748,37.871-42.748c9.242,6.14,20.307,9.272,31.912,8.147l0.897-0.765c-0.281,2.876-0.157,5.689,0.359,9.019c-13.572,15.167-9.584,17.83-36.723,23.416c-27.457,5.659-11.326,15.734-0.797,18.367c12.768,3.193,42.305,7.716,62.268-20.224 l-0.795,3.188c5.325,4.26,4.965,30.619,5.72,49.452c0.756,18.834,2.017,36.409,5.856,46.771c3.839,10.36,8.369,37.05,44.036,29.406c29.809-6.388,52.6-15.582,54.677-101.107\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#336791;stroke:none;\" d=\"M402.395,271.23c-50.302,10.376-53.76-6.655-53.76-6.655c53.111-78.808,75.313-178.843,56.153-203.326c-52.27-66.785-142.752-35.2-144.262-34.38l-0.486,0.087c-9.938-2.063-21.06-3.292-33.56-3.496c-22.761-0.373-40.026,5.967-53.127,15.902 c0,0-161.411-66.495-153.904,83.63c1.597,31.938,45.776,241.657,98.471,178.312c19.26-23.163,37.869-42.748,37.869-42.748c9.243,6.14,20.308,9.272,31.908,8.147l0.901-0.765c-0.28,2.876-0.152,5.689,0.361,9.019c-13.575,15.167-9.586,17.83-36.723,23.416 c-27.459,5.659-11.328,15.734-0.796,18.367c12.768,3.193,42.307,7.716,62.266-20.224l-0.796,3.188c5.319,4.26,9.054,27.711,8.428,48.969c-0.626,21.259-1.044,35.854,3.147,47.254c4.191,11.4,8.368,37.05,44.042,29.406c29.809-6.388,45.256-22.942,47.405-50.555 c1.525-19.631,4.976-16.729,5.194-34.28l2.768-8.309c3.192-26.611,0.507-35.196,18.872-31.203l4.463,0.392c13.517,0.615,31.208-2.174,41.591-7c22.358-10.376,35.618-27.7,13.573-23.148z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M215.866,286.484c-1.385,49.516,0.348,99.377,5.193,111.495c4.848,12.118,15.223,35.688,50.9,28.045c29.806-6.39,40.651-18.756,45.357-46.051c3.466-20.082,10.148-75.854,11.005-87.281\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M173.104,38.256c0,0-161.521-66.016-154.012,84.109c1.597,31.938,45.779,241.664,98.473,178.316c19.256-23.166,36.671-41.335,36.671-41.335\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M260.349,26.207c-5.591,1.753,89.848-34.889,144.087,34.417c19.159,24.484-3.043,124.519-56.153,203.329\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke-linejoin:bevel;\" d=\"M348.282,263.953c0,0,3.461,17.036,53.764,6.653c22.04-4.552,8.776,12.774-13.577,23.155c-18.345,8.514-59.474,10.696-60.146-1.069c-1.729-30.355,21.647-21.133,19.96-28.739c-1.525-6.85-11.979-13.573-18.894-30.338 c-6.037-14.633-82.796-126.849,21.287-110.183c3.813-0.789-27.146-99.002-124.553-100.599c-97.385-1.597-94.19,119.762-94.19,119.762\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M188.604,274.334c-13.577,15.166-9.584,17.829-36.723,23.417c-27.459,5.66-11.326,15.733-0.797,18.365c12.768,3.195,42.307,7.718,62.266-20.229c6.078-8.509-0.036-22.086-8.385-25.547c-4.034-1.671-9.428-3.765-16.361,3.994z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M187.715,274.069c-1.368-8.917,2.93-19.528,7.536-31.942c6.922-18.626,22.893-37.255,10.117-96.339c-9.523-44.029-73.396-9.163-73.436-3.193c-0.039,5.968,2.889,30.26-1.067,58.548c-5.162,36.913,23.488,68.132,56.479,64.938\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#FFFFFF;stroke-width:4.155;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M172.517,141.7c-0.288,2.039,3.733,7.48,8.976,8.207c5.234,0.73,9.714-3.522,9.998-5.559c0.284-2.039-3.732-4.285-8.977-5.015c-5.237-0.731-9.719,0.333-9.996,2.367z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#FFFFFF;stroke-width:2.0775;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M331.941,137.543c0.284,2.039-3.732,7.48-8.976,8.207c-5.238,0.73-9.718-3.522-10.005-5.559c-0.277-2.039,3.74-4.285,8.979-5.015c5.239-0.73,9.718,0.333,10.002,2.368z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M350.676,123.432c0.863,15.994-3.445,26.888-3.988,43.914c-0.804,24.748,11.799,53.074-7.191,81.435\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke-width:3;\" d=\"M0,60.232\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 432.1 445.4\" style=\"enable-background:new 0 0 432.1 445.4;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n .st0{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;}\n .st1{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:bevel;}\n .st2{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:4.155;}\n .st3{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:2.0775;}\n .st4{fill:none;stroke:#FFFFFF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;}\n\u003c/style\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"orginal\"\u003e\n\u003c/g\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_x0020_3\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M215.9,286.5c-1.4,49.5,0.3,99.4,5.2,111.5c4.8,12.1,15.2,35.7,50.9,28c29.8-6.4,40.7-18.8,45.4-46.1\u0026#xA; c3.5-20.1,10.1-75.9,11-87.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M173.1,38.3c0,0-161.5-66-154,84.1c1.6,31.9,45.8,241.7,98.5,178.3c19.3-23.2,36.7-41.3,36.7-41.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M260.3,26.2c-5.6,1.8,89.8-34.9,144.1,34.4c19.2,24.5-3,124.5-56.2,203.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st1\" d=\"M348.3,264c0,0,3.5,17,53.8,6.7c22-4.6,8.8,12.8-13.6,23.2c-18.3,8.5-59.5,10.7-60.1-1.1\u0026#xA; C326.6,262.3,350,271.6,348.3,264c-1.5-6.9-12-13.6-18.9-30.3c-6-14.6-82.8-126.8,21.3-110.2c3.8-0.8-27.1-99-124.6-100.6\u0026#xA; c-97.4-1.6-94.2,119.8-94.2,119.8\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M188.6,274.3c-13.6,15.2-9.6,17.8-36.7,23.4c-27.5,5.7-11.3,15.7-0.8,18.4c12.8,3.2,42.3,7.7,62.3-20.2\u0026#xA; c6.1-8.5,0-22.1-8.4-25.5C200.9,268.7,195.5,266.6,188.6,274.3L188.6,274.3z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M187.7,274.1c-1.4-8.9,2.9-19.5,7.5-31.9c6.9-18.6,22.9-37.3,10.1-96.3c-9.5-44-73.4-9.2-73.4-3.2\u0026#xA; c0,6,2.9,30.3-1.1,58.5c-5.2,36.9,23.5,68.1,56.5,64.9\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st2\" d=\"M172.5,141.7c-0.3,2,3.7,7.5,9,8.2c5.2,0.7,9.7-3.5,10-5.6c0.3-2-3.7-4.3-9-5\u0026#xA; C177.3,138.6,172.8,139.7,172.5,141.7L172.5,141.7z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st3\" d=\"M331.9,137.5c0.3,2-3.7,7.5-9,8.2c-5.2,0.7-9.7-3.5-10-5.6c-0.3-2,3.7-4.3,9-5S331.7,135.5,331.9,137.5\u0026#xA; L331.9,137.5z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M350.7,123.4c0.9,16-3.4,26.9-4,43.9c-0.8,24.7,11.8,53.1-7.2,81.4\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st4\" d=\"M0,60.2\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003c/svg\u003e" + }, + "model": { + "version": "2.4.2" + }, + "name": "pg-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "App Definition and Development", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#336791", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"432.071pt\" height=\"445.383pt\" viewBox=\"0 0 432.071 445.383\" xml:space=\"preserve\"\u003e\n\u003cg id=\"orginal\" style=\"fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;\"\u003e\n\t\u003c/g\u003e\n\u003cg id=\"Layer_x0020_3\" style=\"fill-rule:nonzero;clip-rule:nonzero;fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;\"\u003e\n\u003cpath style=\"fill:#000000;stroke:#000000;stroke-width:37.3953;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M323.205,324.227c2.833-23.601,1.984-27.062,19.563-23.239l4.463,0.392c13.517,0.615,31.199-2.174,41.587-7c22.362-10.376,35.622-27.7,13.572-23.148c-50.297,10.376-53.755-6.655-53.755-6.655c53.111-78.803,75.313-178.836,56.149-203.322 C352.514-5.534,262.036,26.049,260.522,26.869l-0.482,0.089c-9.938-2.062-21.06-3.294-33.554-3.496c-22.761-0.374-40.032,5.967-53.133,15.904c0,0-161.408-66.498-153.899,83.628c1.597,31.936,45.777,241.655,98.47,178.31 c19.259-23.163,37.871-42.748,37.871-42.748c9.242,6.14,20.307,9.272,31.912,8.147l0.897-0.765c-0.281,2.876-0.157,5.689,0.359,9.019c-13.572,15.167-9.584,17.83-36.723,23.416c-27.457,5.659-11.326,15.734-0.797,18.367c12.768,3.193,42.305,7.716,62.268-20.224 l-0.795,3.188c5.325,4.26,4.965,30.619,5.72,49.452c0.756,18.834,2.017,36.409,5.856,46.771c3.839,10.36,8.369,37.05,44.036,29.406c29.809-6.388,52.6-15.582,54.677-101.107\"/\u003e\n\u003cpath style=\"fill:#336791;stroke:none;\" d=\"M402.395,271.23c-50.302,10.376-53.76-6.655-53.76-6.655c53.111-78.808,75.313-178.843,56.153-203.326c-52.27-66.785-142.752-35.2-144.262-34.38l-0.486,0.087c-9.938-2.063-21.06-3.292-33.56-3.496c-22.761-0.373-40.026,5.967-53.127,15.902 c0,0-161.411-66.495-153.904,83.63c1.597,31.938,45.776,241.657,98.471,178.312c19.26-23.163,37.869-42.748,37.869-42.748c9.243,6.14,20.308,9.272,31.908,8.147l0.901-0.765c-0.28,2.876-0.152,5.689,0.361,9.019c-13.575,15.167-9.586,17.83-36.723,23.416 c-27.459,5.659-11.328,15.734-0.796,18.367c12.768,3.193,42.307,7.716,62.266-20.224l-0.796,3.188c5.319,4.26,9.054,27.711,8.428,48.969c-0.626,21.259-1.044,35.854,3.147,47.254c4.191,11.4,8.368,37.05,44.042,29.406c29.809-6.388,45.256-22.942,47.405-50.555 c1.525-19.631,4.976-16.729,5.194-34.28l2.768-8.309c3.192-26.611,0.507-35.196,18.872-31.203l4.463,0.392c13.517,0.615,31.208-2.174,41.591-7c22.358-10.376,35.618-27.7,13.573-23.148z\"/\u003e\n\u003cpath d=\"M215.866,286.484c-1.385,49.516,0.348,99.377,5.193,111.495c4.848,12.118,15.223,35.688,50.9,28.045c29.806-6.39,40.651-18.756,45.357-46.051c3.466-20.082,10.148-75.854,11.005-87.281\"/\u003e\n\u003cpath d=\"M173.104,38.256c0,0-161.521-66.016-154.012,84.109c1.597,31.938,45.779,241.664,98.473,178.316c19.256-23.166,36.671-41.335,36.671-41.335\"/\u003e\n\u003cpath d=\"M260.349,26.207c-5.591,1.753,89.848-34.889,144.087,34.417c19.159,24.484-3.043,124.519-56.153,203.329\"/\u003e\n\u003cpath style=\"stroke-linejoin:bevel;\" d=\"M348.282,263.953c0,0,3.461,17.036,53.764,6.653c22.04-4.552,8.776,12.774-13.577,23.155c-18.345,8.514-59.474,10.696-60.146-1.069c-1.729-30.355,21.647-21.133,19.96-28.739c-1.525-6.85-11.979-13.573-18.894-30.338 c-6.037-14.633-82.796-126.849,21.287-110.183c3.813-0.789-27.146-99.002-124.553-100.599c-97.385-1.597-94.19,119.762-94.19,119.762\"/\u003e\n\u003cpath d=\"M188.604,274.334c-13.577,15.166-9.584,17.829-36.723,23.417c-27.459,5.66-11.326,15.733-0.797,18.365c12.768,3.195,42.307,7.718,62.266-20.229c6.078-8.509-0.036-22.086-8.385-25.547c-4.034-1.671-9.428-3.765-16.361,3.994z\"/\u003e\n\u003cpath d=\"M187.715,274.069c-1.368-8.917,2.93-19.528,7.536-31.942c6.922-18.626,22.893-37.255,10.117-96.339c-9.523-44.029-73.396-9.163-73.436-3.193c-0.039,5.968,2.889,30.26-1.067,58.548c-5.162,36.913,23.488,68.132,56.479,64.938\"/\u003e\n\u003cpath style=\"fill:#FFFFFF;stroke-width:4.155;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M172.517,141.7c-0.288,2.039,3.733,7.48,8.976,8.207c5.234,0.73,9.714-3.522,9.998-5.559c0.284-2.039-3.732-4.285-8.977-5.015c-5.237-0.731-9.719,0.333-9.996,2.367z\"/\u003e\n\u003cpath style=\"fill:#FFFFFF;stroke-width:2.0775;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M331.941,137.543c0.284,2.039-3.732,7.48-8.976,8.207c-5.238,0.73-9.718-3.522-10.005-5.559c-0.277-2.039,3.74-4.285,8.979-5.015c5.239-0.73,9.718,0.333,10.002,2.368z\"/\u003e\n\u003cpath d=\"M350.676,123.432c0.863,15.994-3.445,26.888-3.988,43.914c-0.804,24.748,11.799,53.074-7.191,81.435\"/\u003e\n\u003cpath style=\"stroke-width:3;\" d=\"M0,60.232\"/\u003e\n\u003c/g\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 432.1 445.4\" style=\"enable-background:new 0 0 432.1 445.4;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n .st0{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;}\n .st1{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:bevel;}\n .st2{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:4.155;}\n .st3{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:2.0775;}\n .st4{fill:none;stroke:#FFFFFF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;}\n\u003c/style\u003e\n\u003cg id=\"orginal\"\u003e\n\u003c/g\u003e\n\u003cg id=\"Layer_x0020_3\"\u003e\n \u003cpath class=\"st0\" d=\"M215.9,286.5c-1.4,49.5,0.3,99.4,5.2,111.5c4.8,12.1,15.2,35.7,50.9,28c29.8-6.4,40.7-18.8,45.4-46.1\n c3.5-20.1,10.1-75.9,11-87.3\"/\u003e\n \u003cpath class=\"st0\" d=\"M173.1,38.3c0,0-161.5-66-154,84.1c1.6,31.9,45.8,241.7,98.5,178.3c19.3-23.2,36.7-41.3,36.7-41.3\"/\u003e\n \u003cpath class=\"st0\" d=\"M260.3,26.2c-5.6,1.8,89.8-34.9,144.1,34.4c19.2,24.5-3,124.5-56.2,203.3\"/\u003e\n \u003cpath class=\"st1\" d=\"M348.3,264c0,0,3.5,17,53.8,6.7c22-4.6,8.8,12.8-13.6,23.2c-18.3,8.5-59.5,10.7-60.1-1.1\n C326.6,262.3,350,271.6,348.3,264c-1.5-6.9-12-13.6-18.9-30.3c-6-14.6-82.8-126.8,21.3-110.2c3.8-0.8-27.1-99-124.6-100.6\n c-97.4-1.6-94.2,119.8-94.2,119.8\"/\u003e\n \u003cpath class=\"st0\" d=\"M188.6,274.3c-13.6,15.2-9.6,17.8-36.7,23.4c-27.5,5.7-11.3,15.7-0.8,18.4c12.8,3.2,42.3,7.7,62.3-20.2\n c6.1-8.5,0-22.1-8.4-25.5C200.9,268.7,195.5,266.6,188.6,274.3L188.6,274.3z\"/\u003e\n \u003cpath class=\"st0\" d=\"M187.7,274.1c-1.4-8.9,2.9-19.5,7.5-31.9c6.9-18.6,22.9-37.3,10.1-96.3c-9.5-44-73.4-9.2-73.4-3.2\n c0,6,2.9,30.3-1.1,58.5c-5.2,36.9,23.5,68.1,56.5,64.9\"/\u003e\n \u003cpath class=\"st2\" d=\"M172.5,141.7c-0.3,2,3.7,7.5,9,8.2c5.2,0.7,9.7-3.5,10-5.6c0.3-2-3.7-4.3-9-5\n C177.3,138.6,172.8,139.7,172.5,141.7L172.5,141.7z\"/\u003e\n \u003cpath class=\"st3\" d=\"M331.9,137.5c0.3,2-3.7,7.5-9,8.2c-5.2,0.7-9.7-3.5-10-5.6c-0.3-2,3.7-4.3,9-5S331.7,135.5,331.9,137.5\n L331.9,137.5z\"/\u003e\n \u003cpath class=\"st0\" d=\"M350.7,123.4c0.9,16-3.4,26.9-4,43.9c-0.8,24.7,11.8,53.1-7.2,81.4\"/\u003e\n \u003cpath class=\"st4\" d=\"M0,60.2\"/\u003e\n\u003c/g\u003e\n\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PGUpgrade.json b/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PGUpgrade.json new file mode 100644 index 00000000000..b7a3cd4771f --- /dev/null +++ b/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PGUpgrade.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "PGUpgrade", + "schema": "{\n \"description\": \"PGUpgrade is the Schema for the pgupgrades API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"PGUpgradeSpec defines the desired state of PGUpgrade\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Scheduling constraints of the PGUpgrade pod.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fromPostgresVersion\": {\n \"description\": \"The major version of PostgreSQL before the upgrade.\",\n \"maximum\": 16,\n \"minimum\": 10,\n \"type\": \"integer\"\n },\n \"image\": {\n \"description\": \"The image name to use for major PostgreSQL upgrades.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"ImagePullPolicy is used to determine when Kubernetes will attempt to\\npull (download) container images.\\nMore info: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\",\n \"enum\": [\n \"Always\",\n \"Never\",\n \"IfNotPresent\"\n ],\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"The image pull secrets used to pull from a private registry.\\nChanging this value causes all running PGUpgrade pods to restart.\\nhttps://k8s.io/docs/tasks/configure-pod-container/pull-image-private-registry/\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"initContainers\": {\n \"description\": \"Init container to run before the upgrade container.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"metadata\": {\n \"description\": \"Metadata contains metadata for custom resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"postgresClusterName\": {\n \"description\": \"The name of the cluster to be updated\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class name for the PGUpgrade pod. Changing this\\nvalue causes PGUpgrade pod to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resource requirements for the PGUpgrade container.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"toPostgresImage\": {\n \"description\": \"The image name to use for PostgreSQL containers after upgrade.\\nWhen omitted, the value comes from an operator environment variable.\",\n \"type\": \"string\"\n },\n \"toPostgresVersion\": {\n \"description\": \"The major version of PostgreSQL to be upgraded to.\",\n \"maximum\": 16,\n \"minimum\": 10,\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of the PGUpgrade pod.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"The list of volume mounts to mount to upgrade pod.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"fromPostgresVersion\",\n \"postgresClusterName\",\n \"toPostgresVersion\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"PG Upgrade\",\n \"type\": \"object\"\n}", + "version": "postgres-operator.crunchydata.com/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "PG Upgrade", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/percona/percona-helm-charts/releases/download/pg-operator-2.4.2/pg-operator-2.4.2.tgz" + }, + "model": { + "category": { + "name": "Database" + }, + "displayName": "Percona Postgres Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#336791", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/percona/percona-helm-charts/releases/download/pg-operator-2.4.2/pg-operator-2.4.2.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 432.071 445.383\" xml:space=\"preserve\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"orginal\" style=\"fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;\"\u003e\n\u0026#x9;\u003c/g\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_x0020_3\" style=\"fill-rule:nonzero;clip-rule:nonzero;fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#000000;stroke:#000000;stroke-width:37.3953;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M323.205,324.227c2.833-23.601,1.984-27.062,19.563-23.239l4.463,0.392c13.517,0.615,31.199-2.174,41.587-7c22.362-10.376,35.622-27.7,13.572-23.148c-50.297,10.376-53.755-6.655-53.755-6.655c53.111-78.803,75.313-178.836,56.149-203.322 C352.514-5.534,262.036,26.049,260.522,26.869l-0.482,0.089c-9.938-2.062-21.06-3.294-33.554-3.496c-22.761-0.374-40.032,5.967-53.133,15.904c0,0-161.408-66.498-153.899,83.628c1.597,31.936,45.777,241.655,98.47,178.31 c19.259-23.163,37.871-42.748,37.871-42.748c9.242,6.14,20.307,9.272,31.912,8.147l0.897-0.765c-0.281,2.876-0.157,5.689,0.359,9.019c-13.572,15.167-9.584,17.83-36.723,23.416c-27.457,5.659-11.326,15.734-0.797,18.367c12.768,3.193,42.305,7.716,62.268-20.224 l-0.795,3.188c5.325,4.26,4.965,30.619,5.72,49.452c0.756,18.834,2.017,36.409,5.856,46.771c3.839,10.36,8.369,37.05,44.036,29.406c29.809-6.388,52.6-15.582,54.677-101.107\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#336791;stroke:none;\" d=\"M402.395,271.23c-50.302,10.376-53.76-6.655-53.76-6.655c53.111-78.808,75.313-178.843,56.153-203.326c-52.27-66.785-142.752-35.2-144.262-34.38l-0.486,0.087c-9.938-2.063-21.06-3.292-33.56-3.496c-22.761-0.373-40.026,5.967-53.127,15.902 c0,0-161.411-66.495-153.904,83.63c1.597,31.938,45.776,241.657,98.471,178.312c19.26-23.163,37.869-42.748,37.869-42.748c9.243,6.14,20.308,9.272,31.908,8.147l0.901-0.765c-0.28,2.876-0.152,5.689,0.361,9.019c-13.575,15.167-9.586,17.83-36.723,23.416 c-27.459,5.659-11.328,15.734-0.796,18.367c12.768,3.193,42.307,7.716,62.266-20.224l-0.796,3.188c5.319,4.26,9.054,27.711,8.428,48.969c-0.626,21.259-1.044,35.854,3.147,47.254c4.191,11.4,8.368,37.05,44.042,29.406c29.809-6.388,45.256-22.942,47.405-50.555 c1.525-19.631,4.976-16.729,5.194-34.28l2.768-8.309c3.192-26.611,0.507-35.196,18.872-31.203l4.463,0.392c13.517,0.615,31.208-2.174,41.591-7c22.358-10.376,35.618-27.7,13.573-23.148z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M215.866,286.484c-1.385,49.516,0.348,99.377,5.193,111.495c4.848,12.118,15.223,35.688,50.9,28.045c29.806-6.39,40.651-18.756,45.357-46.051c3.466-20.082,10.148-75.854,11.005-87.281\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M173.104,38.256c0,0-161.521-66.016-154.012,84.109c1.597,31.938,45.779,241.664,98.473,178.316c19.256-23.166,36.671-41.335,36.671-41.335\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M260.349,26.207c-5.591,1.753,89.848-34.889,144.087,34.417c19.159,24.484-3.043,124.519-56.153,203.329\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke-linejoin:bevel;\" d=\"M348.282,263.953c0,0,3.461,17.036,53.764,6.653c22.04-4.552,8.776,12.774-13.577,23.155c-18.345,8.514-59.474,10.696-60.146-1.069c-1.729-30.355,21.647-21.133,19.96-28.739c-1.525-6.85-11.979-13.573-18.894-30.338 c-6.037-14.633-82.796-126.849,21.287-110.183c3.813-0.789-27.146-99.002-124.553-100.599c-97.385-1.597-94.19,119.762-94.19,119.762\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M188.604,274.334c-13.577,15.166-9.584,17.829-36.723,23.417c-27.459,5.66-11.326,15.733-0.797,18.365c12.768,3.195,42.307,7.718,62.266-20.229c6.078-8.509-0.036-22.086-8.385-25.547c-4.034-1.671-9.428-3.765-16.361,3.994z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M187.715,274.069c-1.368-8.917,2.93-19.528,7.536-31.942c6.922-18.626,22.893-37.255,10.117-96.339c-9.523-44.029-73.396-9.163-73.436-3.193c-0.039,5.968,2.889,30.26-1.067,58.548c-5.162,36.913,23.488,68.132,56.479,64.938\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#FFFFFF;stroke-width:4.155;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M172.517,141.7c-0.288,2.039,3.733,7.48,8.976,8.207c5.234,0.73,9.714-3.522,9.998-5.559c0.284-2.039-3.732-4.285-8.977-5.015c-5.237-0.731-9.719,0.333-9.996,2.367z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#FFFFFF;stroke-width:2.0775;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M331.941,137.543c0.284,2.039-3.732,7.48-8.976,8.207c-5.238,0.73-9.718-3.522-10.005-5.559c-0.277-2.039,3.74-4.285,8.979-5.015c5.239-0.73,9.718,0.333,10.002,2.368z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M350.676,123.432c0.863,15.994-3.445,26.888-3.988,43.914c-0.804,24.748,11.799,53.074-7.191,81.435\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke-width:3;\" d=\"M0,60.232\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 432.1 445.4\" style=\"enable-background:new 0 0 432.1 445.4;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n .st0{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;}\n .st1{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:bevel;}\n .st2{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:4.155;}\n .st3{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:2.0775;}\n .st4{fill:none;stroke:#FFFFFF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;}\n\u003c/style\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"orginal\"\u003e\n\u003c/g\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_x0020_3\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M215.9,286.5c-1.4,49.5,0.3,99.4,5.2,111.5c4.8,12.1,15.2,35.7,50.9,28c29.8-6.4,40.7-18.8,45.4-46.1\u0026#xA; c3.5-20.1,10.1-75.9,11-87.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M173.1,38.3c0,0-161.5-66-154,84.1c1.6,31.9,45.8,241.7,98.5,178.3c19.3-23.2,36.7-41.3,36.7-41.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M260.3,26.2c-5.6,1.8,89.8-34.9,144.1,34.4c19.2,24.5-3,124.5-56.2,203.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st1\" d=\"M348.3,264c0,0,3.5,17,53.8,6.7c22-4.6,8.8,12.8-13.6,23.2c-18.3,8.5-59.5,10.7-60.1-1.1\u0026#xA; C326.6,262.3,350,271.6,348.3,264c-1.5-6.9-12-13.6-18.9-30.3c-6-14.6-82.8-126.8,21.3-110.2c3.8-0.8-27.1-99-124.6-100.6\u0026#xA; c-97.4-1.6-94.2,119.8-94.2,119.8\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M188.6,274.3c-13.6,15.2-9.6,17.8-36.7,23.4c-27.5,5.7-11.3,15.7-0.8,18.4c12.8,3.2,42.3,7.7,62.3-20.2\u0026#xA; c6.1-8.5,0-22.1-8.4-25.5C200.9,268.7,195.5,266.6,188.6,274.3L188.6,274.3z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M187.7,274.1c-1.4-8.9,2.9-19.5,7.5-31.9c6.9-18.6,22.9-37.3,10.1-96.3c-9.5-44-73.4-9.2-73.4-3.2\u0026#xA; c0,6,2.9,30.3-1.1,58.5c-5.2,36.9,23.5,68.1,56.5,64.9\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st2\" d=\"M172.5,141.7c-0.3,2,3.7,7.5,9,8.2c5.2,0.7,9.7-3.5,10-5.6c0.3-2-3.7-4.3-9-5\u0026#xA; C177.3,138.6,172.8,139.7,172.5,141.7L172.5,141.7z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st3\" d=\"M331.9,137.5c0.3,2-3.7,7.5-9,8.2c-5.2,0.7-9.7-3.5-10-5.6c-0.3-2,3.7-4.3,9-5S331.7,135.5,331.9,137.5\u0026#xA; L331.9,137.5z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M350.7,123.4c0.9,16-3.4,26.9-4,43.9c-0.8,24.7,11.8,53.1-7.2,81.4\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st4\" d=\"M0,60.2\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003c/svg\u003e" + }, + "model": { + "version": "2.4.2" + }, + "name": "pg-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "App Definition and Development", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#336791", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"432.071pt\" height=\"445.383pt\" viewBox=\"0 0 432.071 445.383\" xml:space=\"preserve\"\u003e\n\u003cg id=\"orginal\" style=\"fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;\"\u003e\n\t\u003c/g\u003e\n\u003cg id=\"Layer_x0020_3\" style=\"fill-rule:nonzero;clip-rule:nonzero;fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;\"\u003e\n\u003cpath style=\"fill:#000000;stroke:#000000;stroke-width:37.3953;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M323.205,324.227c2.833-23.601,1.984-27.062,19.563-23.239l4.463,0.392c13.517,0.615,31.199-2.174,41.587-7c22.362-10.376,35.622-27.7,13.572-23.148c-50.297,10.376-53.755-6.655-53.755-6.655c53.111-78.803,75.313-178.836,56.149-203.322 C352.514-5.534,262.036,26.049,260.522,26.869l-0.482,0.089c-9.938-2.062-21.06-3.294-33.554-3.496c-22.761-0.374-40.032,5.967-53.133,15.904c0,0-161.408-66.498-153.899,83.628c1.597,31.936,45.777,241.655,98.47,178.31 c19.259-23.163,37.871-42.748,37.871-42.748c9.242,6.14,20.307,9.272,31.912,8.147l0.897-0.765c-0.281,2.876-0.157,5.689,0.359,9.019c-13.572,15.167-9.584,17.83-36.723,23.416c-27.457,5.659-11.326,15.734-0.797,18.367c12.768,3.193,42.305,7.716,62.268-20.224 l-0.795,3.188c5.325,4.26,4.965,30.619,5.72,49.452c0.756,18.834,2.017,36.409,5.856,46.771c3.839,10.36,8.369,37.05,44.036,29.406c29.809-6.388,52.6-15.582,54.677-101.107\"/\u003e\n\u003cpath style=\"fill:#336791;stroke:none;\" d=\"M402.395,271.23c-50.302,10.376-53.76-6.655-53.76-6.655c53.111-78.808,75.313-178.843,56.153-203.326c-52.27-66.785-142.752-35.2-144.262-34.38l-0.486,0.087c-9.938-2.063-21.06-3.292-33.56-3.496c-22.761-0.373-40.026,5.967-53.127,15.902 c0,0-161.411-66.495-153.904,83.63c1.597,31.938,45.776,241.657,98.471,178.312c19.26-23.163,37.869-42.748,37.869-42.748c9.243,6.14,20.308,9.272,31.908,8.147l0.901-0.765c-0.28,2.876-0.152,5.689,0.361,9.019c-13.575,15.167-9.586,17.83-36.723,23.416 c-27.459,5.659-11.328,15.734-0.796,18.367c12.768,3.193,42.307,7.716,62.266-20.224l-0.796,3.188c5.319,4.26,9.054,27.711,8.428,48.969c-0.626,21.259-1.044,35.854,3.147,47.254c4.191,11.4,8.368,37.05,44.042,29.406c29.809-6.388,45.256-22.942,47.405-50.555 c1.525-19.631,4.976-16.729,5.194-34.28l2.768-8.309c3.192-26.611,0.507-35.196,18.872-31.203l4.463,0.392c13.517,0.615,31.208-2.174,41.591-7c22.358-10.376,35.618-27.7,13.573-23.148z\"/\u003e\n\u003cpath d=\"M215.866,286.484c-1.385,49.516,0.348,99.377,5.193,111.495c4.848,12.118,15.223,35.688,50.9,28.045c29.806-6.39,40.651-18.756,45.357-46.051c3.466-20.082,10.148-75.854,11.005-87.281\"/\u003e\n\u003cpath d=\"M173.104,38.256c0,0-161.521-66.016-154.012,84.109c1.597,31.938,45.779,241.664,98.473,178.316c19.256-23.166,36.671-41.335,36.671-41.335\"/\u003e\n\u003cpath d=\"M260.349,26.207c-5.591,1.753,89.848-34.889,144.087,34.417c19.159,24.484-3.043,124.519-56.153,203.329\"/\u003e\n\u003cpath style=\"stroke-linejoin:bevel;\" d=\"M348.282,263.953c0,0,3.461,17.036,53.764,6.653c22.04-4.552,8.776,12.774-13.577,23.155c-18.345,8.514-59.474,10.696-60.146-1.069c-1.729-30.355,21.647-21.133,19.96-28.739c-1.525-6.85-11.979-13.573-18.894-30.338 c-6.037-14.633-82.796-126.849,21.287-110.183c3.813-0.789-27.146-99.002-124.553-100.599c-97.385-1.597-94.19,119.762-94.19,119.762\"/\u003e\n\u003cpath d=\"M188.604,274.334c-13.577,15.166-9.584,17.829-36.723,23.417c-27.459,5.66-11.326,15.733-0.797,18.365c12.768,3.195,42.307,7.718,62.266-20.229c6.078-8.509-0.036-22.086-8.385-25.547c-4.034-1.671-9.428-3.765-16.361,3.994z\"/\u003e\n\u003cpath d=\"M187.715,274.069c-1.368-8.917,2.93-19.528,7.536-31.942c6.922-18.626,22.893-37.255,10.117-96.339c-9.523-44.029-73.396-9.163-73.436-3.193c-0.039,5.968,2.889,30.26-1.067,58.548c-5.162,36.913,23.488,68.132,56.479,64.938\"/\u003e\n\u003cpath style=\"fill:#FFFFFF;stroke-width:4.155;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M172.517,141.7c-0.288,2.039,3.733,7.48,8.976,8.207c5.234,0.73,9.714-3.522,9.998-5.559c0.284-2.039-3.732-4.285-8.977-5.015c-5.237-0.731-9.719,0.333-9.996,2.367z\"/\u003e\n\u003cpath style=\"fill:#FFFFFF;stroke-width:2.0775;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M331.941,137.543c0.284,2.039-3.732,7.48-8.976,8.207c-5.238,0.73-9.718-3.522-10.005-5.559c-0.277-2.039,3.74-4.285,8.979-5.015c5.239-0.73,9.718,0.333,10.002,2.368z\"/\u003e\n\u003cpath d=\"M350.676,123.432c0.863,15.994-3.445,26.888-3.988,43.914c-0.804,24.748,11.799,53.074-7.191,81.435\"/\u003e\n\u003cpath style=\"stroke-width:3;\" d=\"M0,60.232\"/\u003e\n\u003c/g\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 432.1 445.4\" style=\"enable-background:new 0 0 432.1 445.4;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n .st0{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;}\n .st1{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:bevel;}\n .st2{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:4.155;}\n .st3{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:2.0775;}\n .st4{fill:none;stroke:#FFFFFF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;}\n\u003c/style\u003e\n\u003cg id=\"orginal\"\u003e\n\u003c/g\u003e\n\u003cg id=\"Layer_x0020_3\"\u003e\n \u003cpath class=\"st0\" d=\"M215.9,286.5c-1.4,49.5,0.3,99.4,5.2,111.5c4.8,12.1,15.2,35.7,50.9,28c29.8-6.4,40.7-18.8,45.4-46.1\n c3.5-20.1,10.1-75.9,11-87.3\"/\u003e\n \u003cpath class=\"st0\" d=\"M173.1,38.3c0,0-161.5-66-154,84.1c1.6,31.9,45.8,241.7,98.5,178.3c19.3-23.2,36.7-41.3,36.7-41.3\"/\u003e\n \u003cpath class=\"st0\" d=\"M260.3,26.2c-5.6,1.8,89.8-34.9,144.1,34.4c19.2,24.5-3,124.5-56.2,203.3\"/\u003e\n \u003cpath class=\"st1\" d=\"M348.3,264c0,0,3.5,17,53.8,6.7c22-4.6,8.8,12.8-13.6,23.2c-18.3,8.5-59.5,10.7-60.1-1.1\n C326.6,262.3,350,271.6,348.3,264c-1.5-6.9-12-13.6-18.9-30.3c-6-14.6-82.8-126.8,21.3-110.2c3.8-0.8-27.1-99-124.6-100.6\n c-97.4-1.6-94.2,119.8-94.2,119.8\"/\u003e\n \u003cpath class=\"st0\" d=\"M188.6,274.3c-13.6,15.2-9.6,17.8-36.7,23.4c-27.5,5.7-11.3,15.7-0.8,18.4c12.8,3.2,42.3,7.7,62.3-20.2\n c6.1-8.5,0-22.1-8.4-25.5C200.9,268.7,195.5,266.6,188.6,274.3L188.6,274.3z\"/\u003e\n \u003cpath class=\"st0\" d=\"M187.7,274.1c-1.4-8.9,2.9-19.5,7.5-31.9c6.9-18.6,22.9-37.3,10.1-96.3c-9.5-44-73.4-9.2-73.4-3.2\n c0,6,2.9,30.3-1.1,58.5c-5.2,36.9,23.5,68.1,56.5,64.9\"/\u003e\n \u003cpath class=\"st2\" d=\"M172.5,141.7c-0.3,2,3.7,7.5,9,8.2c5.2,0.7,9.7-3.5,10-5.6c0.3-2-3.7-4.3-9-5\n C177.3,138.6,172.8,139.7,172.5,141.7L172.5,141.7z\"/\u003e\n \u003cpath class=\"st3\" d=\"M331.9,137.5c0.3,2-3.7,7.5-9,8.2c-5.2,0.7-9.7-3.5-10-5.6c-0.3-2,3.7-4.3,9-5S331.7,135.5,331.9,137.5\n L331.9,137.5z\"/\u003e\n \u003cpath class=\"st0\" d=\"M350.7,123.4c0.9,16-3.4,26.9-4,43.9c-0.8,24.7,11.8,53.1-7.2,81.4\"/\u003e\n \u003cpath class=\"st4\" d=\"M0,60.2\"/\u003e\n\u003c/g\u003e\n\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PerconaPGBackup.json b/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PerconaPGBackup.json new file mode 100644 index 00000000000..019abe0e370 --- /dev/null +++ b/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PerconaPGBackup.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "PerconaPGBackup", + "schema": "{\n \"description\": \"PerconaPGBackup is the CRD that defines a Percona PostgreSQL Backup\",\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"options\": {\n \"description\": \"Command line options to include when running the pgBackRest backup command.\\nhttps://pgbackrest.org/command.html#command-backup\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pgCluster\": {\n \"type\": \"string\"\n },\n \"repoName\": {\n \"description\": \"The name of the pgBackRest repo to run the backup command against.\",\n \"pattern\": \"^repo[1-4]\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pgCluster\",\n \"repoName\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"metadata\",\n \"spec\"\n ],\n \"title\": \"Percona PG Backup\",\n \"type\": \"object\"\n}", + "version": "pgv2.percona.com/v2" + }, + "configuration": null, + "description": "", + "displayName": "Percona PG Backup", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/percona/percona-helm-charts/releases/download/pg-operator-2.4.2/pg-operator-2.4.2.tgz" + }, + "model": { + "category": { + "name": "Database" + }, + "displayName": "Percona Postgres Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#336791", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/percona/percona-helm-charts/releases/download/pg-operator-2.4.2/pg-operator-2.4.2.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 432.071 445.383\" xml:space=\"preserve\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"orginal\" style=\"fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;\"\u003e\n\u0026#x9;\u003c/g\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_x0020_3\" style=\"fill-rule:nonzero;clip-rule:nonzero;fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#000000;stroke:#000000;stroke-width:37.3953;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M323.205,324.227c2.833-23.601,1.984-27.062,19.563-23.239l4.463,0.392c13.517,0.615,31.199-2.174,41.587-7c22.362-10.376,35.622-27.7,13.572-23.148c-50.297,10.376-53.755-6.655-53.755-6.655c53.111-78.803,75.313-178.836,56.149-203.322 C352.514-5.534,262.036,26.049,260.522,26.869l-0.482,0.089c-9.938-2.062-21.06-3.294-33.554-3.496c-22.761-0.374-40.032,5.967-53.133,15.904c0,0-161.408-66.498-153.899,83.628c1.597,31.936,45.777,241.655,98.47,178.31 c19.259-23.163,37.871-42.748,37.871-42.748c9.242,6.14,20.307,9.272,31.912,8.147l0.897-0.765c-0.281,2.876-0.157,5.689,0.359,9.019c-13.572,15.167-9.584,17.83-36.723,23.416c-27.457,5.659-11.326,15.734-0.797,18.367c12.768,3.193,42.305,7.716,62.268-20.224 l-0.795,3.188c5.325,4.26,4.965,30.619,5.72,49.452c0.756,18.834,2.017,36.409,5.856,46.771c3.839,10.36,8.369,37.05,44.036,29.406c29.809-6.388,52.6-15.582,54.677-101.107\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#336791;stroke:none;\" d=\"M402.395,271.23c-50.302,10.376-53.76-6.655-53.76-6.655c53.111-78.808,75.313-178.843,56.153-203.326c-52.27-66.785-142.752-35.2-144.262-34.38l-0.486,0.087c-9.938-2.063-21.06-3.292-33.56-3.496c-22.761-0.373-40.026,5.967-53.127,15.902 c0,0-161.411-66.495-153.904,83.63c1.597,31.938,45.776,241.657,98.471,178.312c19.26-23.163,37.869-42.748,37.869-42.748c9.243,6.14,20.308,9.272,31.908,8.147l0.901-0.765c-0.28,2.876-0.152,5.689,0.361,9.019c-13.575,15.167-9.586,17.83-36.723,23.416 c-27.459,5.659-11.328,15.734-0.796,18.367c12.768,3.193,42.307,7.716,62.266-20.224l-0.796,3.188c5.319,4.26,9.054,27.711,8.428,48.969c-0.626,21.259-1.044,35.854,3.147,47.254c4.191,11.4,8.368,37.05,44.042,29.406c29.809-6.388,45.256-22.942,47.405-50.555 c1.525-19.631,4.976-16.729,5.194-34.28l2.768-8.309c3.192-26.611,0.507-35.196,18.872-31.203l4.463,0.392c13.517,0.615,31.208-2.174,41.591-7c22.358-10.376,35.618-27.7,13.573-23.148z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M215.866,286.484c-1.385,49.516,0.348,99.377,5.193,111.495c4.848,12.118,15.223,35.688,50.9,28.045c29.806-6.39,40.651-18.756,45.357-46.051c3.466-20.082,10.148-75.854,11.005-87.281\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M173.104,38.256c0,0-161.521-66.016-154.012,84.109c1.597,31.938,45.779,241.664,98.473,178.316c19.256-23.166,36.671-41.335,36.671-41.335\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M260.349,26.207c-5.591,1.753,89.848-34.889,144.087,34.417c19.159,24.484-3.043,124.519-56.153,203.329\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke-linejoin:bevel;\" d=\"M348.282,263.953c0,0,3.461,17.036,53.764,6.653c22.04-4.552,8.776,12.774-13.577,23.155c-18.345,8.514-59.474,10.696-60.146-1.069c-1.729-30.355,21.647-21.133,19.96-28.739c-1.525-6.85-11.979-13.573-18.894-30.338 c-6.037-14.633-82.796-126.849,21.287-110.183c3.813-0.789-27.146-99.002-124.553-100.599c-97.385-1.597-94.19,119.762-94.19,119.762\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M188.604,274.334c-13.577,15.166-9.584,17.829-36.723,23.417c-27.459,5.66-11.326,15.733-0.797,18.365c12.768,3.195,42.307,7.718,62.266-20.229c6.078-8.509-0.036-22.086-8.385-25.547c-4.034-1.671-9.428-3.765-16.361,3.994z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M187.715,274.069c-1.368-8.917,2.93-19.528,7.536-31.942c6.922-18.626,22.893-37.255,10.117-96.339c-9.523-44.029-73.396-9.163-73.436-3.193c-0.039,5.968,2.889,30.26-1.067,58.548c-5.162,36.913,23.488,68.132,56.479,64.938\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#FFFFFF;stroke-width:4.155;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M172.517,141.7c-0.288,2.039,3.733,7.48,8.976,8.207c5.234,0.73,9.714-3.522,9.998-5.559c0.284-2.039-3.732-4.285-8.977-5.015c-5.237-0.731-9.719,0.333-9.996,2.367z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#FFFFFF;stroke-width:2.0775;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M331.941,137.543c0.284,2.039-3.732,7.48-8.976,8.207c-5.238,0.73-9.718-3.522-10.005-5.559c-0.277-2.039,3.74-4.285,8.979-5.015c5.239-0.73,9.718,0.333,10.002,2.368z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M350.676,123.432c0.863,15.994-3.445,26.888-3.988,43.914c-0.804,24.748,11.799,53.074-7.191,81.435\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke-width:3;\" d=\"M0,60.232\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 432.1 445.4\" style=\"enable-background:new 0 0 432.1 445.4;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n .st0{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;}\n .st1{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:bevel;}\n .st2{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:4.155;}\n .st3{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:2.0775;}\n .st4{fill:none;stroke:#FFFFFF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;}\n\u003c/style\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"orginal\"\u003e\n\u003c/g\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_x0020_3\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M215.9,286.5c-1.4,49.5,0.3,99.4,5.2,111.5c4.8,12.1,15.2,35.7,50.9,28c29.8-6.4,40.7-18.8,45.4-46.1\u0026#xA; c3.5-20.1,10.1-75.9,11-87.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M173.1,38.3c0,0-161.5-66-154,84.1c1.6,31.9,45.8,241.7,98.5,178.3c19.3-23.2,36.7-41.3,36.7-41.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M260.3,26.2c-5.6,1.8,89.8-34.9,144.1,34.4c19.2,24.5-3,124.5-56.2,203.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st1\" d=\"M348.3,264c0,0,3.5,17,53.8,6.7c22-4.6,8.8,12.8-13.6,23.2c-18.3,8.5-59.5,10.7-60.1-1.1\u0026#xA; C326.6,262.3,350,271.6,348.3,264c-1.5-6.9-12-13.6-18.9-30.3c-6-14.6-82.8-126.8,21.3-110.2c3.8-0.8-27.1-99-124.6-100.6\u0026#xA; c-97.4-1.6-94.2,119.8-94.2,119.8\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M188.6,274.3c-13.6,15.2-9.6,17.8-36.7,23.4c-27.5,5.7-11.3,15.7-0.8,18.4c12.8,3.2,42.3,7.7,62.3-20.2\u0026#xA; c6.1-8.5,0-22.1-8.4-25.5C200.9,268.7,195.5,266.6,188.6,274.3L188.6,274.3z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M187.7,274.1c-1.4-8.9,2.9-19.5,7.5-31.9c6.9-18.6,22.9-37.3,10.1-96.3c-9.5-44-73.4-9.2-73.4-3.2\u0026#xA; c0,6,2.9,30.3-1.1,58.5c-5.2,36.9,23.5,68.1,56.5,64.9\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st2\" d=\"M172.5,141.7c-0.3,2,3.7,7.5,9,8.2c5.2,0.7,9.7-3.5,10-5.6c0.3-2-3.7-4.3-9-5\u0026#xA; C177.3,138.6,172.8,139.7,172.5,141.7L172.5,141.7z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st3\" d=\"M331.9,137.5c0.3,2-3.7,7.5-9,8.2c-5.2,0.7-9.7-3.5-10-5.6c-0.3-2,3.7-4.3,9-5S331.7,135.5,331.9,137.5\u0026#xA; L331.9,137.5z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M350.7,123.4c0.9,16-3.4,26.9-4,43.9c-0.8,24.7,11.8,53.1-7.2,81.4\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st4\" d=\"M0,60.2\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003c/svg\u003e" + }, + "model": { + "version": "2.4.2" + }, + "name": "pg-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "App Definition and Development", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#336791", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"432.071pt\" height=\"445.383pt\" viewBox=\"0 0 432.071 445.383\" xml:space=\"preserve\"\u003e\n\u003cg id=\"orginal\" style=\"fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;\"\u003e\n\t\u003c/g\u003e\n\u003cg id=\"Layer_x0020_3\" style=\"fill-rule:nonzero;clip-rule:nonzero;fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;\"\u003e\n\u003cpath style=\"fill:#000000;stroke:#000000;stroke-width:37.3953;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M323.205,324.227c2.833-23.601,1.984-27.062,19.563-23.239l4.463,0.392c13.517,0.615,31.199-2.174,41.587-7c22.362-10.376,35.622-27.7,13.572-23.148c-50.297,10.376-53.755-6.655-53.755-6.655c53.111-78.803,75.313-178.836,56.149-203.322 C352.514-5.534,262.036,26.049,260.522,26.869l-0.482,0.089c-9.938-2.062-21.06-3.294-33.554-3.496c-22.761-0.374-40.032,5.967-53.133,15.904c0,0-161.408-66.498-153.899,83.628c1.597,31.936,45.777,241.655,98.47,178.31 c19.259-23.163,37.871-42.748,37.871-42.748c9.242,6.14,20.307,9.272,31.912,8.147l0.897-0.765c-0.281,2.876-0.157,5.689,0.359,9.019c-13.572,15.167-9.584,17.83-36.723,23.416c-27.457,5.659-11.326,15.734-0.797,18.367c12.768,3.193,42.305,7.716,62.268-20.224 l-0.795,3.188c5.325,4.26,4.965,30.619,5.72,49.452c0.756,18.834,2.017,36.409,5.856,46.771c3.839,10.36,8.369,37.05,44.036,29.406c29.809-6.388,52.6-15.582,54.677-101.107\"/\u003e\n\u003cpath style=\"fill:#336791;stroke:none;\" d=\"M402.395,271.23c-50.302,10.376-53.76-6.655-53.76-6.655c53.111-78.808,75.313-178.843,56.153-203.326c-52.27-66.785-142.752-35.2-144.262-34.38l-0.486,0.087c-9.938-2.063-21.06-3.292-33.56-3.496c-22.761-0.373-40.026,5.967-53.127,15.902 c0,0-161.411-66.495-153.904,83.63c1.597,31.938,45.776,241.657,98.471,178.312c19.26-23.163,37.869-42.748,37.869-42.748c9.243,6.14,20.308,9.272,31.908,8.147l0.901-0.765c-0.28,2.876-0.152,5.689,0.361,9.019c-13.575,15.167-9.586,17.83-36.723,23.416 c-27.459,5.659-11.328,15.734-0.796,18.367c12.768,3.193,42.307,7.716,62.266-20.224l-0.796,3.188c5.319,4.26,9.054,27.711,8.428,48.969c-0.626,21.259-1.044,35.854,3.147,47.254c4.191,11.4,8.368,37.05,44.042,29.406c29.809-6.388,45.256-22.942,47.405-50.555 c1.525-19.631,4.976-16.729,5.194-34.28l2.768-8.309c3.192-26.611,0.507-35.196,18.872-31.203l4.463,0.392c13.517,0.615,31.208-2.174,41.591-7c22.358-10.376,35.618-27.7,13.573-23.148z\"/\u003e\n\u003cpath d=\"M215.866,286.484c-1.385,49.516,0.348,99.377,5.193,111.495c4.848,12.118,15.223,35.688,50.9,28.045c29.806-6.39,40.651-18.756,45.357-46.051c3.466-20.082,10.148-75.854,11.005-87.281\"/\u003e\n\u003cpath d=\"M173.104,38.256c0,0-161.521-66.016-154.012,84.109c1.597,31.938,45.779,241.664,98.473,178.316c19.256-23.166,36.671-41.335,36.671-41.335\"/\u003e\n\u003cpath d=\"M260.349,26.207c-5.591,1.753,89.848-34.889,144.087,34.417c19.159,24.484-3.043,124.519-56.153,203.329\"/\u003e\n\u003cpath style=\"stroke-linejoin:bevel;\" d=\"M348.282,263.953c0,0,3.461,17.036,53.764,6.653c22.04-4.552,8.776,12.774-13.577,23.155c-18.345,8.514-59.474,10.696-60.146-1.069c-1.729-30.355,21.647-21.133,19.96-28.739c-1.525-6.85-11.979-13.573-18.894-30.338 c-6.037-14.633-82.796-126.849,21.287-110.183c3.813-0.789-27.146-99.002-124.553-100.599c-97.385-1.597-94.19,119.762-94.19,119.762\"/\u003e\n\u003cpath d=\"M188.604,274.334c-13.577,15.166-9.584,17.829-36.723,23.417c-27.459,5.66-11.326,15.733-0.797,18.365c12.768,3.195,42.307,7.718,62.266-20.229c6.078-8.509-0.036-22.086-8.385-25.547c-4.034-1.671-9.428-3.765-16.361,3.994z\"/\u003e\n\u003cpath d=\"M187.715,274.069c-1.368-8.917,2.93-19.528,7.536-31.942c6.922-18.626,22.893-37.255,10.117-96.339c-9.523-44.029-73.396-9.163-73.436-3.193c-0.039,5.968,2.889,30.26-1.067,58.548c-5.162,36.913,23.488,68.132,56.479,64.938\"/\u003e\n\u003cpath style=\"fill:#FFFFFF;stroke-width:4.155;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M172.517,141.7c-0.288,2.039,3.733,7.48,8.976,8.207c5.234,0.73,9.714-3.522,9.998-5.559c0.284-2.039-3.732-4.285-8.977-5.015c-5.237-0.731-9.719,0.333-9.996,2.367z\"/\u003e\n\u003cpath style=\"fill:#FFFFFF;stroke-width:2.0775;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M331.941,137.543c0.284,2.039-3.732,7.48-8.976,8.207c-5.238,0.73-9.718-3.522-10.005-5.559c-0.277-2.039,3.74-4.285,8.979-5.015c5.239-0.73,9.718,0.333,10.002,2.368z\"/\u003e\n\u003cpath d=\"M350.676,123.432c0.863,15.994-3.445,26.888-3.988,43.914c-0.804,24.748,11.799,53.074-7.191,81.435\"/\u003e\n\u003cpath style=\"stroke-width:3;\" d=\"M0,60.232\"/\u003e\n\u003c/g\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 432.1 445.4\" style=\"enable-background:new 0 0 432.1 445.4;\" xml:space=\"preserve\" width='432.1' height='445.4'\u003e\n\u003cstyle type=\"text/css\"\u003e\n .st0{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;}\n .st1{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:bevel;}\n .st2{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:4.155;}\n .st3{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:2.0775;}\n .st4{fill:none;stroke:#FFFFFF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;}\n\u003c/style\u003e\n\u003cg id=\"orginal\"\u003e\n\u003c/g\u003e\n\u003cg id=\"Layer_x0020_3\"\u003e\n \u003cpath class=\"st0\" d=\"M215.9,286.5c-1.4,49.5,0.3,99.4,5.2,111.5c4.8,12.1,15.2,35.7,50.9,28c29.8-6.4,40.7-18.8,45.4-46.1\n c3.5-20.1,10.1-75.9,11-87.3\"/\u003e\n \u003cpath class=\"st0\" d=\"M173.1,38.3c0,0-161.5-66-154,84.1c1.6,31.9,45.8,241.7,98.5,178.3c19.3-23.2,36.7-41.3,36.7-41.3\"/\u003e\n \u003cpath class=\"st0\" d=\"M260.3,26.2c-5.6,1.8,89.8-34.9,144.1,34.4c19.2,24.5-3,124.5-56.2,203.3\"/\u003e\n \u003cpath class=\"st1\" d=\"M348.3,264c0,0,3.5,17,53.8,6.7c22-4.6,8.8,12.8-13.6,23.2c-18.3,8.5-59.5,10.7-60.1-1.1\n C326.6,262.3,350,271.6,348.3,264c-1.5-6.9-12-13.6-18.9-30.3c-6-14.6-82.8-126.8,21.3-110.2c3.8-0.8-27.1-99-124.6-100.6\n c-97.4-1.6-94.2,119.8-94.2,119.8\"/\u003e\n \u003cpath class=\"st0\" d=\"M188.6,274.3c-13.6,15.2-9.6,17.8-36.7,23.4c-27.5,5.7-11.3,15.7-0.8,18.4c12.8,3.2,42.3,7.7,62.3-20.2\n c6.1-8.5,0-22.1-8.4-25.5C200.9,268.7,195.5,266.6,188.6,274.3L188.6,274.3z\"/\u003e\n \u003cpath class=\"st0\" d=\"M187.7,274.1c-1.4-8.9,2.9-19.5,7.5-31.9c6.9-18.6,22.9-37.3,10.1-96.3c-9.5-44-73.4-9.2-73.4-3.2\n c0,6,2.9,30.3-1.1,58.5c-5.2,36.9,23.5,68.1,56.5,64.9\"/\u003e\n \u003cpath class=\"st2\" d=\"M172.5,141.7c-0.3,2,3.7,7.5,9,8.2c5.2,0.7,9.7-3.5,10-5.6c0.3-2-3.7-4.3-9-5\n C177.3,138.6,172.8,139.7,172.5,141.7L172.5,141.7z\"/\u003e\n \u003cpath class=\"st3\" d=\"M331.9,137.5c0.3,2-3.7,7.5-9,8.2c-5.2,0.7-9.7-3.5-10-5.6c-0.3-2,3.7-4.3,9-5S331.7,135.5,331.9,137.5\n L331.9,137.5z\"/\u003e\n \u003cpath class=\"st0\" d=\"M350.7,123.4c0.9,16-3.4,26.9-4,43.9c-0.8,24.7,11.8,53.1-7.2,81.4\"/\u003e\n \u003cpath class=\"st4\" d=\"M0,60.2\"/\u003e\n\u003c/g\u003e\n\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PerconaPGCluster.json b/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PerconaPGCluster.json new file mode 100644 index 00000000000..fa5d295d76a --- /dev/null +++ b/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PerconaPGCluster.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "PerconaPGCluster", + "schema": "{\n \"description\": \"PerconaPGCluster is the CRD that defines a Percona PG Cluster\",\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"backups\": {\n \"description\": \"PostgreSQL backup configuration\",\n \"properties\": {\n \"pgbackrest\": {\n \"description\": \"pgBackRest archive configuration\",\n \"properties\": {\n \"configuration\": {\n \"description\": \"Projected volumes containing custom pgBackRest configuration. These files are mounted\\nunder \\\"/etc/pgbackrest/conf.d\\\" alongside any pgBackRest configuration generated by the\\nPostgreSQL Operator:\\nhttps://pgbackrest.org/configuration.html\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"containers\": {\n \"description\": \"Configuration for pgBackRest sidecar containers\",\n \"properties\": {\n \"pgbackrest\": {\n \"description\": \"Defines the configuration for the pgBackRest sidecar container\",\n \"properties\": {\n \"resources\": {\n \"description\": \"Resource requirements for a sidecar container\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"pgbackrestConfig\": {\n \"description\": \"Defines the configuration for the pgBackRest config sidecar container\",\n \"properties\": {\n \"resources\": {\n \"description\": \"Resource requirements for a sidecar container\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"global\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Global pgBackRest configuration settings. These settings are included in the \\\"global\\\"\\nsection of the pgBackRest configuration generated by the PostgreSQL Operator, and then\\nmounted under \\\"/etc/pgbackrest/conf.d\\\":\\nhttps://pgbackrest.org/configuration.html\",\n \"type\": \"object\"\n },\n \"image\": {\n \"description\": \"The image name to use for pgBackRest containers. Utilized to run\\npgBackRest repository hosts and backups. The image may also be set using\\nthe RELATED_IMAGE_PGBACKREST environment variable\",\n \"type\": \"string\"\n },\n \"jobs\": {\n \"description\": \"Jobs field allows configuration for all backup jobs\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Scheduling constraints of pgBackRest backup Job pods.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class name for the pgBackRest backup Job pods.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resource limits for backup jobs. Includes manual, scheduled and replica\\ncreate backups\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security settings for PGBackRest pod.\",\n \"properties\": {\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of pgBackRest backup Job pods.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"ttlSecondsAfterFinished\": {\n \"description\": \"Limit the lifetime of a Job that has finished.\\nMore info: https://kubernetes.io/docs/concepts/workloads/controllers/job\",\n \"format\": \"int32\",\n \"minimum\": 60,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"manual\": {\n \"description\": \"Defines details for manual pgBackRest backup Jobs\",\n \"properties\": {\n \"options\": {\n \"description\": \"Command line options to include when running the pgBackRest backup command.\\nhttps://pgbackrest.org/command.html#command-backup\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"repoName\": {\n \"description\": \"The name of the pgBackRest repo to run the backup command against.\",\n \"pattern\": \"^repo[1-4]\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repoName\"\n ],\n \"type\": \"object\"\n },\n \"metadata\": {\n \"description\": \"Metadata contains metadata for custom resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"repoHost\": {\n \"description\": \"Defines configuration for a pgBackRest dedicated repository host. This section is only\\napplicable if at least one \\\"volume\\\" (i.e. PVC-based) repository is defined in the \\\"repos\\\"\\nsection, therefore enabling a dedicated repository host Deployment.\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Scheduling constraints of the Dedicated repo host pod.\\nChanging this value causes repo host to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class name for the pgBackRest repo host pod. Changing this value\\ncauses PostgreSQL to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resource requirements for a pgBackRest repository host\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security settings for PGBackRest pod.\",\n \"properties\": {\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"sshConfigMap\": {\n \"description\": \"ConfigMap containing custom SSH configuration.\\nDeprecated: Repository hosts use mTLS for encryption, authentication, and authorization.\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sshSecret\": {\n \"description\": \"Secret containing custom SSH keys.\\nDeprecated: Repository hosts use mTLS for encryption, authentication, and authorization.\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of a PgBackRest repo host pod. Changing this value causes a restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"Topology spread constraints of a Dedicated repo host pod. Changing this\\nvalue causes the repo host to restart.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods.\\nPods that match this label selector are counted to determine the number of pods\\nin their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nMatchLabelKeys cannot be set when LabelSelector isn't set.\\nKeys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P |\\n- if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P P |\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\\nwhen calculating pod topology spread skew. Options are:\\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating\\npod topology spread skew. Options are:\\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\\nhas a toleration, are included.\\n- Ignore: node taints are ignored. All nodes are included.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\\nthe spread constraint.\\n- DoNotSchedule (default) tells the scheduler not to schedule it.\\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n but giving higher precedence to topologies that would help reduce the\\n skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod\\nif and only if every possible node assignment for that pod would violate\\n\\\"MaxSkew\\\" on some topology.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 3/1/1:\\n| zone1 | zone2 | zone3 |\\n| P P P | P | P |\\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\\nwon't make it *more* imbalanced.\\nIt's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"repos\": {\n \"description\": \"Defines a pgBackRest repository\",\n \"items\": {\n \"description\": \"PGBackRestRepo represents a pgBackRest repository. Only one of its members may be specified.\",\n \"properties\": {\n \"azure\": {\n \"description\": \"Represents a pgBackRest repository that is created using Azure storage\",\n \"properties\": {\n \"container\": {\n \"description\": \"The Azure container utilized for the repository\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"container\"\n ],\n \"type\": \"object\"\n },\n \"gcs\": {\n \"description\": \"Represents a pgBackRest repository that is created using Google Cloud Storage\",\n \"properties\": {\n \"bucket\": {\n \"description\": \"The GCS bucket utilized for the repository\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"bucket\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The name of the repository\",\n \"pattern\": \"^repo[1-4]\",\n \"type\": \"string\"\n },\n \"s3\": {\n \"description\": \"RepoS3 represents a pgBackRest repository that is created using AWS S3 (or S3-compatible)\\nstorage\",\n \"properties\": {\n \"bucket\": {\n \"description\": \"The S3 bucket utilized for the repository\",\n \"type\": \"string\"\n },\n \"endpoint\": {\n \"description\": \"A valid endpoint corresponding to the specified region\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"The region corresponding to the S3 bucket\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"bucket\",\n \"endpoint\",\n \"region\"\n ],\n \"type\": \"object\"\n },\n \"schedules\": {\n \"description\": \"Defines the schedules for the pgBackRest backups\\nFull, Differential and Incremental backup types are supported:\\nhttps://pgbackrest.org/user-guide.html#concept/backup\",\n \"properties\": {\n \"differential\": {\n \"description\": \"Defines the Cron schedule for a differential pgBackRest backup.\\nFollows the standard Cron schedule syntax:\\nhttps://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax\",\n \"minLength\": 6,\n \"type\": \"string\"\n },\n \"full\": {\n \"description\": \"Defines the Cron schedule for a full pgBackRest backup.\\nFollows the standard Cron schedule syntax:\\nhttps://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax\",\n \"minLength\": 6,\n \"type\": \"string\"\n },\n \"incremental\": {\n \"description\": \"Defines the Cron schedule for an incremental pgBackRest backup.\\nFollows the standard Cron schedule syntax:\\nhttps://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax\",\n \"minLength\": 6,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volume\": {\n \"description\": \"Represents a pgBackRest repository that is created using a PersistentVolumeClaim\",\n \"properties\": {\n \"volumeClaimSpec\": {\n \"description\": \"Defines a PersistentVolumeClaim spec used to create and/or bind a volume\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"volumeClaimSpec\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"minItems\": 1,\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"restore\": {\n \"description\": \"Defines details for performing an in-place restore using pgBackRest\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Scheduling constraints of the pgBackRest restore Job.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"clusterName\": {\n \"description\": \"The name of an existing PostgresCluster to use as the data source for the new PostgresCluster.\\nDefaults to the name of the PostgresCluster being created if not provided.\",\n \"type\": \"string\"\n },\n \"clusterNamespace\": {\n \"description\": \"The namespace of the cluster specified as the data source using the clusterName field.\\nDefaults to the namespace of the PostgresCluster being created if not provided.\",\n \"type\": \"string\"\n },\n \"enabled\": {\n \"default\": false,\n \"description\": \"Whether or not in-place pgBackRest restores are enabled for this PostgresCluster.\",\n \"type\": \"boolean\"\n },\n \"options\": {\n \"description\": \"Command line options to include when running the pgBackRest restore command.\\nhttps://pgbackrest.org/command.html#command-restore\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class name for the pgBackRest restore Job pod. Changing this\\nvalue causes PostgreSQL to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/\",\n \"type\": \"string\"\n },\n \"repoName\": {\n \"description\": \"The name of the pgBackRest repo within the source PostgresCluster that contains the backups\\nthat should be utilized to perform a pgBackRest restore when initializing the data source\\nfor the new PostgresCluster.\",\n \"pattern\": \"^repo[1-4]\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resource requirements for the pgBackRest restore Job.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of the pgBackRest restore Job.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"enabled\",\n \"repoName\"\n ],\n \"type\": \"object\"\n },\n \"sidecars\": {\n \"description\": \"Deprecated: Use Containers instead\",\n \"properties\": {\n \"pgbackrest\": {\n \"description\": \"Defines the configuration for the pgBackRest sidecar container\",\n \"properties\": {\n \"resources\": {\n \"description\": \"Resource requirements for a sidecar container\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"pgbackrestConfig\": {\n \"description\": \"Defines the configuration for the pgBackRest config sidecar container\",\n \"properties\": {\n \"resources\": {\n \"description\": \"Resource requirements for a sidecar container\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"repos\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"pgbackrest\"\n ],\n \"type\": \"object\"\n },\n \"crVersion\": {\n \"description\": \"Version of the operator. Update this to new version after operator\\nupgrade to apply changes to Kubernetes objects. Default is the latest\\nversion.\",\n \"type\": \"string\"\n },\n \"dataSource\": {\n \"description\": \"Specifies a data source for bootstrapping the PostgreSQL cluster.\",\n \"properties\": {\n \"pgbackrest\": {\n \"description\": \"Defines a pgBackRest cloud-based data source that can be used to pre-populate the\\nPostgreSQL data directory for a new PostgreSQL cluster using a pgBackRest restore.\\nThe PGBackRest field is incompatible with the PostgresCluster field: only one\\ndata source can be used for pre-populating a new PostgreSQL cluster\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Scheduling constraints of the pgBackRest restore Job.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"configuration\": {\n \"description\": \"Projected volumes containing custom pgBackRest configuration. These files are mounted\\nunder \\\"/etc/pgbackrest/conf.d\\\" alongside any pgBackRest configuration generated by the\\nPostgreSQL Operator:\\nhttps://pgbackrest.org/configuration.html\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"global\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Global pgBackRest configuration settings. These settings are included in the \\\"global\\\"\\nsection of the pgBackRest configuration generated by the PostgreSQL Operator, and then\\nmounted under \\\"/etc/pgbackrest/conf.d\\\":\\nhttps://pgbackrest.org/configuration.html\",\n \"type\": \"object\"\n },\n \"options\": {\n \"description\": \"Command line options to include when running the pgBackRest restore command.\\nhttps://pgbackrest.org/command.html#command-restore\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class name for the pgBackRest restore Job pod. Changing this\\nvalue causes PostgreSQL to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/\",\n \"type\": \"string\"\n },\n \"repo\": {\n \"description\": \"Defines a pgBackRest repository\",\n \"properties\": {\n \"azure\": {\n \"description\": \"Represents a pgBackRest repository that is created using Azure storage\",\n \"properties\": {\n \"container\": {\n \"description\": \"The Azure container utilized for the repository\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"container\"\n ],\n \"type\": \"object\"\n },\n \"gcs\": {\n \"description\": \"Represents a pgBackRest repository that is created using Google Cloud Storage\",\n \"properties\": {\n \"bucket\": {\n \"description\": \"The GCS bucket utilized for the repository\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"bucket\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The name of the repository\",\n \"pattern\": \"^repo[1-4]\",\n \"type\": \"string\"\n },\n \"s3\": {\n \"description\": \"RepoS3 represents a pgBackRest repository that is created using AWS S3 (or S3-compatible)\\nstorage\",\n \"properties\": {\n \"bucket\": {\n \"description\": \"The S3 bucket utilized for the repository\",\n \"type\": \"string\"\n },\n \"endpoint\": {\n \"description\": \"A valid endpoint corresponding to the specified region\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"The region corresponding to the S3 bucket\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"bucket\",\n \"endpoint\",\n \"region\"\n ],\n \"type\": \"object\"\n },\n \"schedules\": {\n \"description\": \"Defines the schedules for the pgBackRest backups\\nFull, Differential and Incremental backup types are supported:\\nhttps://pgbackrest.org/user-guide.html#concept/backup\",\n \"properties\": {\n \"differential\": {\n \"description\": \"Defines the Cron schedule for a differential pgBackRest backup.\\nFollows the standard Cron schedule syntax:\\nhttps://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax\",\n \"minLength\": 6,\n \"type\": \"string\"\n },\n \"full\": {\n \"description\": \"Defines the Cron schedule for a full pgBackRest backup.\\nFollows the standard Cron schedule syntax:\\nhttps://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax\",\n \"minLength\": 6,\n \"type\": \"string\"\n },\n \"incremental\": {\n \"description\": \"Defines the Cron schedule for an incremental pgBackRest backup.\\nFollows the standard Cron schedule syntax:\\nhttps://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax\",\n \"minLength\": 6,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volume\": {\n \"description\": \"Represents a pgBackRest repository that is created using a PersistentVolumeClaim\",\n \"properties\": {\n \"volumeClaimSpec\": {\n \"description\": \"Defines a PersistentVolumeClaim spec used to create and/or bind a volume\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"volumeClaimSpec\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Resource requirements for the pgBackRest restore Job.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"stanza\": {\n \"default\": \"db\",\n \"description\": \"The name of an existing pgBackRest stanza to use as the data source for the new PostgresCluster.\\nDefaults to `db` if not provided.\",\n \"type\": \"string\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of the pgBackRest restore Job.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"repo\",\n \"stanza\"\n ],\n \"type\": \"object\"\n },\n \"postgresCluster\": {\n \"description\": \"Defines a pgBackRest data source that can be used to pre-populate the PostgreSQL data\\ndirectory for a new PostgreSQL cluster using a pgBackRest restore.\\nThe PGBackRest field is incompatible with the PostgresCluster field: only one\\ndata source can be used for pre-populating a new PostgreSQL cluster\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Scheduling constraints of the pgBackRest restore Job.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"clusterName\": {\n \"description\": \"The name of an existing PostgresCluster to use as the data source for the new PostgresCluster.\\nDefaults to the name of the PostgresCluster being created if not provided.\",\n \"type\": \"string\"\n },\n \"clusterNamespace\": {\n \"description\": \"The namespace of the cluster specified as the data source using the clusterName field.\\nDefaults to the namespace of the PostgresCluster being created if not provided.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"description\": \"Command line options to include when running the pgBackRest restore command.\\nhttps://pgbackrest.org/command.html#command-restore\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class name for the pgBackRest restore Job pod. Changing this\\nvalue causes PostgreSQL to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/\",\n \"type\": \"string\"\n },\n \"repoName\": {\n \"description\": \"The name of the pgBackRest repo within the source PostgresCluster that contains the backups\\nthat should be utilized to perform a pgBackRest restore when initializing the data source\\nfor the new PostgresCluster.\",\n \"pattern\": \"^repo[1-4]\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resource requirements for the pgBackRest restore Job.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of the pgBackRest restore Job.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"repoName\"\n ],\n \"type\": \"object\"\n },\n \"volumes\": {\n \"description\": \"Defines any existing volumes to reuse for this PostgresCluster.\",\n \"properties\": {\n \"pgBackRestVolume\": {\n \"description\": \"Defines the existing pgBackRest repo volume and directory to use in the\\ncurrent PostgresCluster.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations of the move dir Job.\",\n \"type\": \"object\"\n },\n \"directory\": {\n \"description\": \"The existing directory. When not set, a move Job is not created for the\\nassociated volume.\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels of the move dir Job.\",\n \"type\": \"object\"\n },\n \"pvcName\": {\n \"description\": \"The existing PVC name.\",\n \"type\": \"string\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of the move dir Job.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"pvcName\"\n ],\n \"type\": \"object\"\n },\n \"pgDataVolume\": {\n \"description\": \"Defines the existing pgData volume and directory to use in the current\\nPostgresCluster.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations of the move dir Job.\",\n \"type\": \"object\"\n },\n \"directory\": {\n \"description\": \"The existing directory. When not set, a move Job is not created for the\\nassociated volume.\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels of the move dir Job.\",\n \"type\": \"object\"\n },\n \"pvcName\": {\n \"description\": \"The existing PVC name.\",\n \"type\": \"string\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of the move dir Job.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"pvcName\"\n ],\n \"type\": \"object\"\n },\n \"pgWALVolume\": {\n \"description\": \"Defines the existing pg_wal volume and directory to use in the current\\nPostgresCluster. Note that a defined pg_wal volume MUST be accompanied by\\na pgData volume.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations of the move dir Job.\",\n \"type\": \"object\"\n },\n \"directory\": {\n \"description\": \"The existing directory. When not set, a move Job is not created for the\\nassociated volume.\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels of the move dir Job.\",\n \"type\": \"object\"\n },\n \"pvcName\": {\n \"description\": \"The existing PVC name.\",\n \"type\": \"string\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of the move dir Job.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"pvcName\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"databaseInitSQL\": {\n \"description\": \"DatabaseInitSQL defines a ConfigMap containing custom SQL that will\\nbe run after the cluster is initialized. This ConfigMap must be in the same\\nnamespace as the cluster.\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key is the ConfigMap data key that points to a SQL string\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of a ConfigMap\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"expose\": {\n \"description\": \"Specification of the service that exposes the PostgreSQL primary instance.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"loadBalancerSourceRanges\": {\n \"description\": \"LoadBalancerSourceRanges is a list of IP CIDRs allowed access to load.\\nThis field will be ignored if the cloud-provider does not support the feature.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"nodePort\": {\n \"description\": \"The port on which this service is exposed when type is NodePort or\\nLoadBalancer. Value must be in-range and not in use or the operation will\\nfail. If unspecified, a port will be allocated if this Service requires one.\\n- https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"type\": {\n \"default\": \"ClusterIP\",\n \"description\": \"More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types\",\n \"enum\": [\n \"ClusterIP\",\n \"NodePort\",\n \"LoadBalancer\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"exposeReplicas\": {\n \"description\": \"Specification of the service that exposes PostgreSQL replica instances\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"loadBalancerSourceRanges\": {\n \"description\": \"LoadBalancerSourceRanges is a list of IP CIDRs allowed access to load.\\nThis field will be ignored if the cloud-provider does not support the feature.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"nodePort\": {\n \"description\": \"The port on which this service is exposed when type is NodePort or\\nLoadBalancer. Value must be in-range and not in use or the operation will\\nfail. If unspecified, a port will be allocated if this Service requires one.\\n- https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"type\": {\n \"default\": \"ClusterIP\",\n \"description\": \"More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types\",\n \"enum\": [\n \"ClusterIP\",\n \"NodePort\",\n \"LoadBalancer\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"description\": \"The specification of extensions.\",\n \"properties\": {\n \"builtin\": {\n \"properties\": {\n \"pg_audit\": {\n \"type\": \"boolean\"\n },\n \"pg_stat_monitor\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"custom\": {\n \"items\": {\n \"properties\": {\n \"checksum\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"version\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"PullPolicy describes a policy for if/when to pull a container image\",\n \"type\": \"string\"\n },\n \"storage\": {\n \"properties\": {\n \"bucket\": {\n \"type\": \"string\"\n },\n \"endpoint\": {\n \"type\": \"string\"\n },\n \"region\": {\n \"type\": \"string\"\n },\n \"secret\": {\n \"description\": \"Adapts a secret into a projected volume.\\n\\n\\nThe contents of the target Secret's Data field will be presented in a\\nprojected volume as files using the keys in the Data field as the file names.\\nNote that this is identical to a secret volume source without the default\\nmode.\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": {\n \"enum\": [\n \"s3\",\n \"gcs\",\n \"azure\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"image\"\n ],\n \"type\": \"object\"\n },\n \"image\": {\n \"description\": \"The image name to use for PostgreSQL containers.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"ImagePullPolicy is used to determine when Kubernetes will attempt to\\npull (download) container images.\\nMore info: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\",\n \"enum\": [\n \"Always\",\n \"Never\",\n \"IfNotPresent\"\n ],\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"The image pull secrets used to pull from a private registry\\nChanging this value causes all running pods to restart.\\nhttps://k8s.io/docs/tasks/configure-pod-container/pull-image-private-registry/\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"instances\": {\n \"description\": \"Specifies one or more sets of PostgreSQL pods that replicate data for\\nthis cluster.\",\n \"items\": {\n \"properties\": {\n \"affinity\": {\n \"description\": \"Scheduling constraints of a PostgreSQL pod. Changing this value causes\\nPostgreSQL to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"containers\": {\n \"description\": \"Configuration for instance default sidecar containers.\",\n \"properties\": {\n \"replicaCertCopy\": {\n \"description\": \"Defines the configuration for the replica cert copy sidecar container\",\n \"properties\": {\n \"resources\": {\n \"description\": \"Resource requirements for a sidecar container\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"dataVolumeClaimSpec\": {\n \"description\": \"Defines a PersistentVolumeClaim for PostgreSQL data.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"initContainers\": {\n \"description\": \"Additional init containers for PostgreSQL instance pods. Changing this value causes\\nPostgreSQL to restart.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"metadata\": {\n \"description\": \"Metadata contains metadata for custom resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"minAvailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Minimum number of pods that should be available at a time.\\nDefaults to one when the replicas field is greater than one.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name that associates this set of PostgreSQL pods. This field is optional\\nwhen only one instance set is defined. Each instance set in a cluster\\nmust have a unique name. The combined length of this and the cluster name\\nmust be 46 characters or less.\",\n \"pattern\": \"^([a-z0-9]([-a-z0-9]*[a-z0-9])?)?$\",\n \"type\": \"string\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class name for the PostgreSQL pod. Changing this value causes\\nPostgreSQL to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/\",\n \"type\": \"string\"\n },\n \"replicas\": {\n \"default\": 1,\n \"description\": \"Number of desired PostgreSQL pods.\",\n \"format\": \"int32\",\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"resources\": {\n \"description\": \"Compute resources of a PostgreSQL container.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security settings for a PostgreSQL pod.\",\n \"properties\": {\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"sidecars\": {\n \"description\": \"Custom sidecars for PostgreSQL instance pods. Changing this value causes\\nPostgreSQL to restart.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tablespaceVolumes\": {\n \"description\": \"The list of tablespaces volumes to mount for this postgrescluster\\nThis field requires enabling TablespaceVolumes feature gate\",\n \"items\": {\n \"properties\": {\n \"dataVolumeClaimSpec\": {\n \"description\": \"Defines a PersistentVolumeClaim for a tablespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The name for the tablespace, used as the path name for the volume.\\nMust be unique in the instance set since they become the directory names.\",\n \"minLength\": 1,\n \"pattern\": \"^[a-z][a-z0-9]*$\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"dataVolumeClaimSpec\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of a PostgreSQL pod. Changing this value causes PostgreSQL to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"Topology spread constraints of a PostgreSQL pod. Changing this value causes\\nPostgreSQL to restart.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods.\\nPods that match this label selector are counted to determine the number of pods\\nin their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nMatchLabelKeys cannot be set when LabelSelector isn't set.\\nKeys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P |\\n- if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P P |\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\\nwhen calculating pod topology spread skew. Options are:\\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating\\npod topology spread skew. Options are:\\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\\nhas a toleration, are included.\\n- Ignore: node taints are ignored. All nodes are included.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\\nthe spread constraint.\\n- DoNotSchedule (default) tells the scheduler not to schedule it.\\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n but giving higher precedence to topologies that would help reduce the\\n skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod\\nif and only if every possible node assignment for that pod would violate\\n\\\"MaxSkew\\\" on some topology.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 3/1/1:\\n| zone1 | zone2 | zone3 |\\n| P P P | P | P |\\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\\nwon't make it *more* imbalanced.\\nIt's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"The list of volume mounts to mount to PostgreSQL instance pods. Changing this value causes\\nPostgreSQL to restart.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"walVolumeClaimSpec\": {\n \"description\": \"Defines a separate PersistentVolumeClaim for PostgreSQL's write-ahead log.\\nMore info: https://www.postgresql.org/docs/current/wal.html\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"dataVolumeClaimSpec\"\n ],\n \"type\": \"object\"\n },\n \"minItems\": 1,\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"metadata\": {\n \"description\": \"Metadata contains metadata for custom resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"openshift\": {\n \"description\": \"Whether or not the PostgreSQL cluster is being deployed to an OpenShift\\nenvironment. If the field is unset, the operator will automatically\\ndetect the environment.\",\n \"type\": \"boolean\"\n },\n \"patroni\": {\n \"properties\": {\n \"dynamicConfiguration\": {\n \"description\": \"Patroni dynamic configuration settings. Changes to this value will be\\nautomatically reloaded without validation. Changes to certain PostgreSQL\\nparameters cause PostgreSQL to restart.\\nMore info: https://patroni.readthedocs.io/en/latest/SETTINGS.html\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"leaderLeaseDurationSeconds\": {\n \"default\": 30,\n \"description\": \"TTL of the cluster leader lock. \\\"Think of it as the\\nlength of time before initiation of the automatic failover process.\\\"\\nChanging this value causes PostgreSQL to restart.\",\n \"format\": \"int32\",\n \"minimum\": 3,\n \"type\": \"integer\"\n },\n \"port\": {\n \"default\": 8008,\n \"description\": \"The port on which Patroni should listen.\\nChanging this value causes PostgreSQL to restart.\",\n \"format\": \"int32\",\n \"minimum\": 1024,\n \"type\": \"integer\"\n },\n \"switchover\": {\n \"description\": \"Switchover gives options to perform ad hoc switchovers in a PostgresCluster.\",\n \"properties\": {\n \"enabled\": {\n \"description\": \"Whether or not the operator should allow switchovers in a PostgresCluster\",\n \"type\": \"boolean\"\n },\n \"targetInstance\": {\n \"description\": \"The instance that should become primary during a switchover. This field is\\noptional when Type is \\\"Switchover\\\" and required when Type is \\\"Failover\\\".\\nWhen it is not specified, a healthy replica is automatically selected.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"Switchover\",\n \"description\": \"Type of switchover to perform. Valid options are Switchover and Failover.\\n\\\"Switchover\\\" changes the primary instance of a healthy PostgresCluster.\\n\\\"Failover\\\" forces a particular instance to be primary, regardless of other\\nfactors. A TargetInstance must be specified to failover.\\nNOTE: The Failover type is reserved as the \\\"last resort\\\" case.\",\n \"enum\": [\n \"Switchover\",\n \"Failover\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"enabled\"\n ],\n \"type\": \"object\"\n },\n \"syncPeriodSeconds\": {\n \"default\": 10,\n \"description\": \"The interval for refreshing the leader lock and applying\\ndynamicConfiguration. Must be less than leaderLeaseDurationSeconds.\\nChanging this value causes PostgreSQL to restart.\",\n \"format\": \"int32\",\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"pause\": {\n \"description\": \"Whether or not the PostgreSQL cluster should be stopped.\\nWhen this is true, workloads are scaled to zero and CronJobs\\nare suspended.\\nOther resources, such as Services and Volumes, remain in place.\",\n \"type\": \"boolean\"\n },\n \"pmm\": {\n \"description\": \"The specification of PMM sidecars.\",\n \"properties\": {\n \"containerSecurityContext\": {\n \"description\": \"SecurityContext holds security configuration that will be applied to a container.\\nSome fields are present in both SecurityContext and PodSecurityContext. When both\\nare set, the values in SecurityContext take precedence.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"ImagePullPolicy is used to determine when Kubernetes will attempt to\\npull (download) container images.\\nMore info: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\",\n \"enum\": [\n \"Always\",\n \"Never\",\n \"IfNotPresent\"\n ],\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Compute resources of a PMM container.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeClassName\": {\n \"type\": \"string\"\n },\n \"secret\": {\n \"type\": \"string\"\n },\n \"serverHost\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"enabled\",\n \"image\"\n ],\n \"type\": \"object\"\n },\n \"port\": {\n \"default\": 5432,\n \"description\": \"The port on which PostgreSQL should listen.\",\n \"format\": \"int32\",\n \"minimum\": 1024,\n \"type\": \"integer\"\n },\n \"postgresVersion\": {\n \"description\": \"The major version of PostgreSQL installed in the PostgreSQL image\",\n \"maximum\": 16,\n \"minimum\": 12,\n \"type\": \"integer\"\n },\n \"proxy\": {\n \"description\": \"The specification of a proxy that connects to PostgreSQL.\",\n \"properties\": {\n \"pgBouncer\": {\n \"description\": \"Defines a PgBouncer proxy and connection pooler.\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Scheduling constraints of a PgBouncer pod. Changing this value causes\\nPgBouncer to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"config\": {\n \"description\": \"Configuration settings for the PgBouncer process. Changes to any of these\\nvalues will be automatically reloaded without validation. Be careful, as\\nyou may put PgBouncer into an unusable state.\\nMore info: https://www.pgbouncer.org/usage.html#reload\",\n \"properties\": {\n \"databases\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"PgBouncer database definitions. The key is the database requested by a\\nclient while the value is a libpq-styled connection string. The special\\nkey \\\"*\\\" acts as a fallback. When this field is empty, PgBouncer is\\nconfigured with a single \\\"*\\\" entry that connects to the primary\\nPostgreSQL instance.\\nMore info: https://www.pgbouncer.org/config.html#section-databases\",\n \"type\": \"object\"\n },\n \"files\": {\n \"description\": \"Files to mount under \\\"/etc/pgbouncer\\\". When specified, settings in the\\n\\\"pgbouncer.ini\\\" file are loaded before all others. From there, other\\nfiles may be included by absolute path. Changing these references causes\\nPgBouncer to restart, but changes to the file contents are automatically\\nreloaded.\\nMore info: https://www.pgbouncer.org/config.html#include-directive\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"global\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Settings that apply to the entire PgBouncer process.\\nMore info: https://www.pgbouncer.org/config.html\",\n \"type\": \"object\"\n },\n \"users\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Connection settings specific to particular users.\\nMore info: https://www.pgbouncer.org/config.html#section-users\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"containers\": {\n \"description\": \"Configuration for pgBouncer default sidecar containers.\",\n \"properties\": {\n \"pgbouncerConfig\": {\n \"description\": \"Defines the configuration for the pgBouncer config sidecar container\",\n \"properties\": {\n \"resources\": {\n \"description\": \"Resource requirements for a sidecar container\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"customTLSSecret\": {\n \"description\": \"A secret projection containing a certificate and key with which to encrypt\\nconnections to PgBouncer. The \\\"tls.crt\\\", \\\"tls.key\\\", and \\\"ca.crt\\\" paths must\\nbe PEM-encoded certificates and keys. Changing this value causes PgBouncer\\nto restart.\\nMore info: https://kubernetes.io/docs/concepts/configuration/secret/#projection-of-secret-keys-to-specific-paths\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"expose\": {\n \"description\": \"Specification of the service that exposes PgBouncer.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"loadBalancerSourceRanges\": {\n \"description\": \"LoadBalancerSourceRanges is a list of IP CIDRs allowed access to load.\\nThis field will be ignored if the cloud-provider does not support the feature.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"nodePort\": {\n \"description\": \"The port on which this service is exposed when type is NodePort or\\nLoadBalancer. Value must be in-range and not in use or the operation will\\nfail. If unspecified, a port will be allocated if this Service requires one.\\n- https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"type\": {\n \"default\": \"ClusterIP\",\n \"description\": \"More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types\",\n \"enum\": [\n \"ClusterIP\",\n \"NodePort\",\n \"LoadBalancer\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"exposeSuperusers\": {\n \"description\": \"Allow SUPERUSERs to connect through PGBouncer.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Name of a container image that can run PgBouncer 1.15 or newer. Changing\\nthis value causes PgBouncer to restart. The image may also be set using\\nthe RELATED_IMAGE_PGBOUNCER environment variable.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"Metadata contains metadata for custom resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"minAvailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Minimum number of pods that should be available at a time.\\nDefaults to one when the replicas field is greater than one.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"port\": {\n \"default\": 5432,\n \"description\": \"Port on which PgBouncer should listen for client connections. Changing\\nthis value causes PgBouncer to restart.\",\n \"format\": \"int32\",\n \"minimum\": 1024,\n \"type\": \"integer\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class name for the pgBouncer pod. Changing this value causes\\nPostgreSQL to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/\",\n \"type\": \"string\"\n },\n \"replicas\": {\n \"default\": 1,\n \"description\": \"Number of desired PgBouncer pods.\",\n \"format\": \"int32\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"resources\": {\n \"description\": \"Compute resources of a PgBouncer container. Changing this value causes\\nPgBouncer to restart.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security settings for PGBouncer pods.\",\n \"properties\": {\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"sidecars\": {\n \"description\": \"Custom sidecars for a PgBouncer pod. Changing this value causes\\nPgBouncer to restart.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of a PgBouncer pod. Changing this value causes PgBouncer to\\nrestart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"Topology spread constraints of a PgBouncer pod. Changing this value causes\\nPgBouncer to restart.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods.\\nPods that match this label selector are counted to determine the number of pods\\nin their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nMatchLabelKeys cannot be set when LabelSelector isn't set.\\nKeys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P |\\n- if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P P |\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\\nwhen calculating pod topology spread skew. Options are:\\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating\\npod topology spread skew. Options are:\\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\\nhas a toleration, are included.\\n- Ignore: node taints are ignored. All nodes are included.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\\nthe spread constraint.\\n- DoNotSchedule (default) tells the scheduler not to schedule it.\\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n but giving higher precedence to topologies that would help reduce the\\n skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod\\nif and only if every possible node assignment for that pod would violate\\n\\\"MaxSkew\\\" on some topology.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 3/1/1:\\n| zone1 | zone2 | zone3 |\\n| P P P | P | P |\\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\\nwon't make it *more* imbalanced.\\nIt's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"pgBouncer\"\n ],\n \"type\": \"object\"\n },\n \"secrets\": {\n \"properties\": {\n \"customReplicationTLSSecret\": {\n \"description\": \"The secret containing the replication client certificates and keys for\\nsecure connections to the PostgreSQL server. It will need to contain the\\nclient TLS certificate, TLS key and the Certificate Authority certificate\\nwith the data keys set to tls.crt, tls.key and ca.crt, respectively.\\nNOTE: If CustomReplicationClientTLSSecret is provided, CustomTLSSecret\\nMUST be provided and the ca.crt provided must be the same.\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"customTLSSecret\": {\n \"description\": \"The secret containing the Certificates and Keys to encrypt PostgreSQL\\ntraffic will need to contain the server TLS certificate, TLS key and the\\nCertificate Authority certificate with the data keys set to tls.crt,\\ntls.key and ca.crt, respectively. It will then be mounted as a volume\\nprojection to the '/pgconf/tls' directory. For more information on\\nKubernetes secret projections, please see\\nhttps://k8s.io/docs/concepts/configuration/secret/#projection-of-secret-keys-to-specific-paths\\nNOTE: If CustomTLSSecret is provided, CustomReplicationClientTLSSecret\\nMUST be provided and the ca.crt provided must be the same.\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"standby\": {\n \"description\": \"Run this cluster as a read-only copy of an existing cluster or archive.\",\n \"properties\": {\n \"enabled\": {\n \"default\": true,\n \"description\": \"Whether or not the PostgreSQL cluster should be read-only. When this is\\ntrue, WAL files are applied from a pgBackRest repository or another\\nPostgreSQL server.\",\n \"type\": \"boolean\"\n },\n \"host\": {\n \"description\": \"Network address of the PostgreSQL server to follow via streaming replication.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Network port of the PostgreSQL server to follow via streaming replication.\",\n \"format\": \"int32\",\n \"minimum\": 1024,\n \"type\": \"integer\"\n },\n \"repoName\": {\n \"description\": \"The name of the pgBackRest repository to follow for WAL files.\",\n \"pattern\": \"^repo[1-4]\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"unmanaged\": {\n \"description\": \"Suspends the rollout and reconciliation of changes made to the\\nPostgresCluster spec.\",\n \"type\": \"boolean\"\n },\n \"users\": {\n \"description\": \"Users to create inside PostgreSQL and the databases they should access.\\nThe default creates one user that can access one database matching the\\nPostgresCluster name. An empty list creates no users. Removing a user\\nfrom this list does NOT drop the user nor revoke their access.\",\n \"items\": {\n \"properties\": {\n \"databases\": {\n \"description\": \"Databases to which this user can connect and create objects. Removing a\\ndatabase from this list does NOT revoke access. This field is ignored for\\nthe \\\"postgres\\\" user.\",\n \"items\": {\n \"description\": \"PostgreSQL identifiers are limited in length but may contain any character.\\nMore info: https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS\",\n \"maxLength\": 63,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"set\"\n },\n \"name\": {\n \"description\": \"The name of this PostgreSQL user. The value may contain only lowercase\\nletters, numbers, and hyphen so that it fits into Kubernetes metadata.\",\n \"maxLength\": 63,\n \"minLength\": 1,\n \"pattern\": \"^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\",\n \"type\": \"string\"\n },\n \"options\": {\n \"description\": \"ALTER ROLE options except for PASSWORD. This field is ignored for the\\n\\\"postgres\\\" user.\\nMore info: https://www.postgresql.org/docs/current/role-attributes.html\",\n \"pattern\": \"^[^;]*$\",\n \"type\": \"string\"\n },\n \"password\": {\n \"description\": \"Properties of the password generated for this user.\",\n \"properties\": {\n \"type\": {\n \"default\": \"ASCII\",\n \"description\": \"Type of password to generate. Defaults to ASCII. Valid options are ASCII\\nand AlphaNumeric.\\n\\\"ASCII\\\" passwords contain letters, numbers, and symbols from the US-ASCII character set.\\n\\\"AlphaNumeric\\\" passwords contain letters and numbers from the US-ASCII character set.\",\n \"enum\": [\n \"ASCII\",\n \"AlphaNumeric\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"secretName\": {\n \"description\": \"The secret name to generate user, password, connection info this PostgreSQL user.\",\n \"maxLength\": 63,\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n }\n },\n \"required\": [\n \"backups\",\n \"instances\",\n \"postgresVersion\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"metadata\",\n \"spec\"\n ],\n \"title\": \"Percona PG Cluster\",\n \"type\": \"object\"\n}", + "version": "pgv2.percona.com/v2" + }, + "configuration": null, + "description": "", + "displayName": "Percona PG Cluster", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/percona/percona-helm-charts/releases/download/pg-operator-2.4.2/pg-operator-2.4.2.tgz" + }, + "model": { + "category": { + "name": "Database" + }, + "displayName": "Percona Postgres Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#336791", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/percona/percona-helm-charts/releases/download/pg-operator-2.4.2/pg-operator-2.4.2.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 432.071 445.383\" xml:space=\"preserve\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"orginal\" style=\"fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;\"\u003e\n\u0026#x9;\u003c/g\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_x0020_3\" style=\"fill-rule:nonzero;clip-rule:nonzero;fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#000000;stroke:#000000;stroke-width:37.3953;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M323.205,324.227c2.833-23.601,1.984-27.062,19.563-23.239l4.463,0.392c13.517,0.615,31.199-2.174,41.587-7c22.362-10.376,35.622-27.7,13.572-23.148c-50.297,10.376-53.755-6.655-53.755-6.655c53.111-78.803,75.313-178.836,56.149-203.322 C352.514-5.534,262.036,26.049,260.522,26.869l-0.482,0.089c-9.938-2.062-21.06-3.294-33.554-3.496c-22.761-0.374-40.032,5.967-53.133,15.904c0,0-161.408-66.498-153.899,83.628c1.597,31.936,45.777,241.655,98.47,178.31 c19.259-23.163,37.871-42.748,37.871-42.748c9.242,6.14,20.307,9.272,31.912,8.147l0.897-0.765c-0.281,2.876-0.157,5.689,0.359,9.019c-13.572,15.167-9.584,17.83-36.723,23.416c-27.457,5.659-11.326,15.734-0.797,18.367c12.768,3.193,42.305,7.716,62.268-20.224 l-0.795,3.188c5.325,4.26,4.965,30.619,5.72,49.452c0.756,18.834,2.017,36.409,5.856,46.771c3.839,10.36,8.369,37.05,44.036,29.406c29.809-6.388,52.6-15.582,54.677-101.107\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#336791;stroke:none;\" d=\"M402.395,271.23c-50.302,10.376-53.76-6.655-53.76-6.655c53.111-78.808,75.313-178.843,56.153-203.326c-52.27-66.785-142.752-35.2-144.262-34.38l-0.486,0.087c-9.938-2.063-21.06-3.292-33.56-3.496c-22.761-0.373-40.026,5.967-53.127,15.902 c0,0-161.411-66.495-153.904,83.63c1.597,31.938,45.776,241.657,98.471,178.312c19.26-23.163,37.869-42.748,37.869-42.748c9.243,6.14,20.308,9.272,31.908,8.147l0.901-0.765c-0.28,2.876-0.152,5.689,0.361,9.019c-13.575,15.167-9.586,17.83-36.723,23.416 c-27.459,5.659-11.328,15.734-0.796,18.367c12.768,3.193,42.307,7.716,62.266-20.224l-0.796,3.188c5.319,4.26,9.054,27.711,8.428,48.969c-0.626,21.259-1.044,35.854,3.147,47.254c4.191,11.4,8.368,37.05,44.042,29.406c29.809-6.388,45.256-22.942,47.405-50.555 c1.525-19.631,4.976-16.729,5.194-34.28l2.768-8.309c3.192-26.611,0.507-35.196,18.872-31.203l4.463,0.392c13.517,0.615,31.208-2.174,41.591-7c22.358-10.376,35.618-27.7,13.573-23.148z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M215.866,286.484c-1.385,49.516,0.348,99.377,5.193,111.495c4.848,12.118,15.223,35.688,50.9,28.045c29.806-6.39,40.651-18.756,45.357-46.051c3.466-20.082,10.148-75.854,11.005-87.281\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M173.104,38.256c0,0-161.521-66.016-154.012,84.109c1.597,31.938,45.779,241.664,98.473,178.316c19.256-23.166,36.671-41.335,36.671-41.335\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M260.349,26.207c-5.591,1.753,89.848-34.889,144.087,34.417c19.159,24.484-3.043,124.519-56.153,203.329\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke-linejoin:bevel;\" d=\"M348.282,263.953c0,0,3.461,17.036,53.764,6.653c22.04-4.552,8.776,12.774-13.577,23.155c-18.345,8.514-59.474,10.696-60.146-1.069c-1.729-30.355,21.647-21.133,19.96-28.739c-1.525-6.85-11.979-13.573-18.894-30.338 c-6.037-14.633-82.796-126.849,21.287-110.183c3.813-0.789-27.146-99.002-124.553-100.599c-97.385-1.597-94.19,119.762-94.19,119.762\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M188.604,274.334c-13.577,15.166-9.584,17.829-36.723,23.417c-27.459,5.66-11.326,15.733-0.797,18.365c12.768,3.195,42.307,7.718,62.266-20.229c6.078-8.509-0.036-22.086-8.385-25.547c-4.034-1.671-9.428-3.765-16.361,3.994z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M187.715,274.069c-1.368-8.917,2.93-19.528,7.536-31.942c6.922-18.626,22.893-37.255,10.117-96.339c-9.523-44.029-73.396-9.163-73.436-3.193c-0.039,5.968,2.889,30.26-1.067,58.548c-5.162,36.913,23.488,68.132,56.479,64.938\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#FFFFFF;stroke-width:4.155;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M172.517,141.7c-0.288,2.039,3.733,7.48,8.976,8.207c5.234,0.73,9.714-3.522,9.998-5.559c0.284-2.039-3.732-4.285-8.977-5.015c-5.237-0.731-9.719,0.333-9.996,2.367z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#FFFFFF;stroke-width:2.0775;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M331.941,137.543c0.284,2.039-3.732,7.48-8.976,8.207c-5.238,0.73-9.718-3.522-10.005-5.559c-0.277-2.039,3.74-4.285,8.979-5.015c5.239-0.73,9.718,0.333,10.002,2.368z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M350.676,123.432c0.863,15.994-3.445,26.888-3.988,43.914c-0.804,24.748,11.799,53.074-7.191,81.435\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke-width:3;\" d=\"M0,60.232\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 432.1 445.4\" style=\"enable-background:new 0 0 432.1 445.4;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n .st0{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;}\n .st1{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:bevel;}\n .st2{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:4.155;}\n .st3{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:2.0775;}\n .st4{fill:none;stroke:#FFFFFF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;}\n\u003c/style\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"orginal\"\u003e\n\u003c/g\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_x0020_3\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M215.9,286.5c-1.4,49.5,0.3,99.4,5.2,111.5c4.8,12.1,15.2,35.7,50.9,28c29.8-6.4,40.7-18.8,45.4-46.1\u0026#xA; c3.5-20.1,10.1-75.9,11-87.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M173.1,38.3c0,0-161.5-66-154,84.1c1.6,31.9,45.8,241.7,98.5,178.3c19.3-23.2,36.7-41.3,36.7-41.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M260.3,26.2c-5.6,1.8,89.8-34.9,144.1,34.4c19.2,24.5-3,124.5-56.2,203.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st1\" d=\"M348.3,264c0,0,3.5,17,53.8,6.7c22-4.6,8.8,12.8-13.6,23.2c-18.3,8.5-59.5,10.7-60.1-1.1\u0026#xA; C326.6,262.3,350,271.6,348.3,264c-1.5-6.9-12-13.6-18.9-30.3c-6-14.6-82.8-126.8,21.3-110.2c3.8-0.8-27.1-99-124.6-100.6\u0026#xA; c-97.4-1.6-94.2,119.8-94.2,119.8\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M188.6,274.3c-13.6,15.2-9.6,17.8-36.7,23.4c-27.5,5.7-11.3,15.7-0.8,18.4c12.8,3.2,42.3,7.7,62.3-20.2\u0026#xA; c6.1-8.5,0-22.1-8.4-25.5C200.9,268.7,195.5,266.6,188.6,274.3L188.6,274.3z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M187.7,274.1c-1.4-8.9,2.9-19.5,7.5-31.9c6.9-18.6,22.9-37.3,10.1-96.3c-9.5-44-73.4-9.2-73.4-3.2\u0026#xA; c0,6,2.9,30.3-1.1,58.5c-5.2,36.9,23.5,68.1,56.5,64.9\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st2\" d=\"M172.5,141.7c-0.3,2,3.7,7.5,9,8.2c5.2,0.7,9.7-3.5,10-5.6c0.3-2-3.7-4.3-9-5\u0026#xA; C177.3,138.6,172.8,139.7,172.5,141.7L172.5,141.7z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st3\" d=\"M331.9,137.5c0.3,2-3.7,7.5-9,8.2c-5.2,0.7-9.7-3.5-10-5.6c-0.3-2,3.7-4.3,9-5S331.7,135.5,331.9,137.5\u0026#xA; L331.9,137.5z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M350.7,123.4c0.9,16-3.4,26.9-4,43.9c-0.8,24.7,11.8,53.1-7.2,81.4\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st4\" d=\"M0,60.2\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003c/svg\u003e" + }, + "model": { + "version": "2.4.2" + }, + "name": "pg-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "App Definition and Development", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#336791", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"432.071pt\" height=\"445.383pt\" viewBox=\"0 0 432.071 445.383\" xml:space=\"preserve\"\u003e\n\u003cg id=\"orginal\" style=\"fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;\"\u003e\n\t\u003c/g\u003e\n\u003cg id=\"Layer_x0020_3\" style=\"fill-rule:nonzero;clip-rule:nonzero;fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;\"\u003e\n\u003cpath style=\"fill:#000000;stroke:#000000;stroke-width:37.3953;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M323.205,324.227c2.833-23.601,1.984-27.062,19.563-23.239l4.463,0.392c13.517,0.615,31.199-2.174,41.587-7c22.362-10.376,35.622-27.7,13.572-23.148c-50.297,10.376-53.755-6.655-53.755-6.655c53.111-78.803,75.313-178.836,56.149-203.322 C352.514-5.534,262.036,26.049,260.522,26.869l-0.482,0.089c-9.938-2.062-21.06-3.294-33.554-3.496c-22.761-0.374-40.032,5.967-53.133,15.904c0,0-161.408-66.498-153.899,83.628c1.597,31.936,45.777,241.655,98.47,178.31 c19.259-23.163,37.871-42.748,37.871-42.748c9.242,6.14,20.307,9.272,31.912,8.147l0.897-0.765c-0.281,2.876-0.157,5.689,0.359,9.019c-13.572,15.167-9.584,17.83-36.723,23.416c-27.457,5.659-11.326,15.734-0.797,18.367c12.768,3.193,42.305,7.716,62.268-20.224 l-0.795,3.188c5.325,4.26,4.965,30.619,5.72,49.452c0.756,18.834,2.017,36.409,5.856,46.771c3.839,10.36,8.369,37.05,44.036,29.406c29.809-6.388,52.6-15.582,54.677-101.107\"/\u003e\n\u003cpath style=\"fill:#336791;stroke:none;\" d=\"M402.395,271.23c-50.302,10.376-53.76-6.655-53.76-6.655c53.111-78.808,75.313-178.843,56.153-203.326c-52.27-66.785-142.752-35.2-144.262-34.38l-0.486,0.087c-9.938-2.063-21.06-3.292-33.56-3.496c-22.761-0.373-40.026,5.967-53.127,15.902 c0,0-161.411-66.495-153.904,83.63c1.597,31.938,45.776,241.657,98.471,178.312c19.26-23.163,37.869-42.748,37.869-42.748c9.243,6.14,20.308,9.272,31.908,8.147l0.901-0.765c-0.28,2.876-0.152,5.689,0.361,9.019c-13.575,15.167-9.586,17.83-36.723,23.416 c-27.459,5.659-11.328,15.734-0.796,18.367c12.768,3.193,42.307,7.716,62.266-20.224l-0.796,3.188c5.319,4.26,9.054,27.711,8.428,48.969c-0.626,21.259-1.044,35.854,3.147,47.254c4.191,11.4,8.368,37.05,44.042,29.406c29.809-6.388,45.256-22.942,47.405-50.555 c1.525-19.631,4.976-16.729,5.194-34.28l2.768-8.309c3.192-26.611,0.507-35.196,18.872-31.203l4.463,0.392c13.517,0.615,31.208-2.174,41.591-7c22.358-10.376,35.618-27.7,13.573-23.148z\"/\u003e\n\u003cpath d=\"M215.866,286.484c-1.385,49.516,0.348,99.377,5.193,111.495c4.848,12.118,15.223,35.688,50.9,28.045c29.806-6.39,40.651-18.756,45.357-46.051c3.466-20.082,10.148-75.854,11.005-87.281\"/\u003e\n\u003cpath d=\"M173.104,38.256c0,0-161.521-66.016-154.012,84.109c1.597,31.938,45.779,241.664,98.473,178.316c19.256-23.166,36.671-41.335,36.671-41.335\"/\u003e\n\u003cpath d=\"M260.349,26.207c-5.591,1.753,89.848-34.889,144.087,34.417c19.159,24.484-3.043,124.519-56.153,203.329\"/\u003e\n\u003cpath style=\"stroke-linejoin:bevel;\" d=\"M348.282,263.953c0,0,3.461,17.036,53.764,6.653c22.04-4.552,8.776,12.774-13.577,23.155c-18.345,8.514-59.474,10.696-60.146-1.069c-1.729-30.355,21.647-21.133,19.96-28.739c-1.525-6.85-11.979-13.573-18.894-30.338 c-6.037-14.633-82.796-126.849,21.287-110.183c3.813-0.789-27.146-99.002-124.553-100.599c-97.385-1.597-94.19,119.762-94.19,119.762\"/\u003e\n\u003cpath d=\"M188.604,274.334c-13.577,15.166-9.584,17.829-36.723,23.417c-27.459,5.66-11.326,15.733-0.797,18.365c12.768,3.195,42.307,7.718,62.266-20.229c6.078-8.509-0.036-22.086-8.385-25.547c-4.034-1.671-9.428-3.765-16.361,3.994z\"/\u003e\n\u003cpath d=\"M187.715,274.069c-1.368-8.917,2.93-19.528,7.536-31.942c6.922-18.626,22.893-37.255,10.117-96.339c-9.523-44.029-73.396-9.163-73.436-3.193c-0.039,5.968,2.889,30.26-1.067,58.548c-5.162,36.913,23.488,68.132,56.479,64.938\"/\u003e\n\u003cpath style=\"fill:#FFFFFF;stroke-width:4.155;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M172.517,141.7c-0.288,2.039,3.733,7.48,8.976,8.207c5.234,0.73,9.714-3.522,9.998-5.559c0.284-2.039-3.732-4.285-8.977-5.015c-5.237-0.731-9.719,0.333-9.996,2.367z\"/\u003e\n\u003cpath style=\"fill:#FFFFFF;stroke-width:2.0775;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M331.941,137.543c0.284,2.039-3.732,7.48-8.976,8.207c-5.238,0.73-9.718-3.522-10.005-5.559c-0.277-2.039,3.74-4.285,8.979-5.015c5.239-0.73,9.718,0.333,10.002,2.368z\"/\u003e\n\u003cpath d=\"M350.676,123.432c0.863,15.994-3.445,26.888-3.988,43.914c-0.804,24.748,11.799,53.074-7.191,81.435\"/\u003e\n\u003cpath style=\"stroke-width:3;\" d=\"M0,60.232\"/\u003e\n\u003c/g\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 432.1 445.4\" style=\"enable-background:new 0 0 432.1 445.4;\" xml:space=\"preserve\" width='432.1' height='445.4'\u003e\n\u003cstyle type=\"text/css\"\u003e\n .st0{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;}\n .st1{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:bevel;}\n .st2{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:4.155;}\n .st3{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:2.0775;}\n .st4{fill:none;stroke:#FFFFFF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;}\n\u003c/style\u003e\n\u003cg id=\"orginal\"\u003e\n\u003c/g\u003e\n\u003cg id=\"Layer_x0020_3\"\u003e\n \u003cpath class=\"st0\" d=\"M215.9,286.5c-1.4,49.5,0.3,99.4,5.2,111.5c4.8,12.1,15.2,35.7,50.9,28c29.8-6.4,40.7-18.8,45.4-46.1\n c3.5-20.1,10.1-75.9,11-87.3\"/\u003e\n \u003cpath class=\"st0\" d=\"M173.1,38.3c0,0-161.5-66-154,84.1c1.6,31.9,45.8,241.7,98.5,178.3c19.3-23.2,36.7-41.3,36.7-41.3\"/\u003e\n \u003cpath class=\"st0\" d=\"M260.3,26.2c-5.6,1.8,89.8-34.9,144.1,34.4c19.2,24.5-3,124.5-56.2,203.3\"/\u003e\n \u003cpath class=\"st1\" d=\"M348.3,264c0,0,3.5,17,53.8,6.7c22-4.6,8.8,12.8-13.6,23.2c-18.3,8.5-59.5,10.7-60.1-1.1\n C326.6,262.3,350,271.6,348.3,264c-1.5-6.9-12-13.6-18.9-30.3c-6-14.6-82.8-126.8,21.3-110.2c3.8-0.8-27.1-99-124.6-100.6\n c-97.4-1.6-94.2,119.8-94.2,119.8\"/\u003e\n \u003cpath class=\"st0\" d=\"M188.6,274.3c-13.6,15.2-9.6,17.8-36.7,23.4c-27.5,5.7-11.3,15.7-0.8,18.4c12.8,3.2,42.3,7.7,62.3-20.2\n c6.1-8.5,0-22.1-8.4-25.5C200.9,268.7,195.5,266.6,188.6,274.3L188.6,274.3z\"/\u003e\n \u003cpath class=\"st0\" d=\"M187.7,274.1c-1.4-8.9,2.9-19.5,7.5-31.9c6.9-18.6,22.9-37.3,10.1-96.3c-9.5-44-73.4-9.2-73.4-3.2\n c0,6,2.9,30.3-1.1,58.5c-5.2,36.9,23.5,68.1,56.5,64.9\"/\u003e\n \u003cpath class=\"st2\" d=\"M172.5,141.7c-0.3,2,3.7,7.5,9,8.2c5.2,0.7,9.7-3.5,10-5.6c0.3-2-3.7-4.3-9-5\n C177.3,138.6,172.8,139.7,172.5,141.7L172.5,141.7z\"/\u003e\n \u003cpath class=\"st3\" d=\"M331.9,137.5c0.3,2-3.7,7.5-9,8.2c-5.2,0.7-9.7-3.5-10-5.6c-0.3-2,3.7-4.3,9-5S331.7,135.5,331.9,137.5\n L331.9,137.5z\"/\u003e\n \u003cpath class=\"st0\" d=\"M350.7,123.4c0.9,16-3.4,26.9-4,43.9c-0.8,24.7,11.8,53.1-7.2,81.4\"/\u003e\n \u003cpath class=\"st4\" d=\"M0,60.2\"/\u003e\n\u003c/g\u003e\n\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PerconaPGRestore.json b/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PerconaPGRestore.json new file mode 100644 index 00000000000..a36904f75bc --- /dev/null +++ b/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PerconaPGRestore.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "PerconaPGRestore", + "schema": "{\n \"description\": \"PerconaPGRestore is the CRD that defines a Percona PostgreSQL Restore\",\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"options\": {\n \"description\": \"Command line options to include when running the pgBackRest restore command.\\nhttps://pgbackrest.org/command.html#command-restore\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pgCluster\": {\n \"description\": \"The name of the PerconaPGCluster to perform restore.\",\n \"type\": \"string\"\n },\n \"repoName\": {\n \"description\": \"The name of the pgBackRest repo within the source PostgresCluster that contains the backups\\nthat should be utilized to perform a pgBackRest restore when initializing the data source\\nfor the new PostgresCluster.\",\n \"pattern\": \"^repo[1-4]\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pgCluster\",\n \"repoName\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"metadata\",\n \"spec\"\n ],\n \"title\": \"Percona PG Restore\",\n \"type\": \"object\"\n}", + "version": "pgv2.percona.com/v2" + }, + "configuration": null, + "description": "", + "displayName": "Percona PG Restore", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/percona/percona-helm-charts/releases/download/pg-operator-2.4.2/pg-operator-2.4.2.tgz" + }, + "model": { + "category": { + "name": "Database" + }, + "displayName": "Percona Postgres Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#336791", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/percona/percona-helm-charts/releases/download/pg-operator-2.4.2/pg-operator-2.4.2.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 432.071 445.383\" xml:space=\"preserve\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"orginal\" style=\"fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;\"\u003e\n\u0026#x9;\u003c/g\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_x0020_3\" style=\"fill-rule:nonzero;clip-rule:nonzero;fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#000000;stroke:#000000;stroke-width:37.3953;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M323.205,324.227c2.833-23.601,1.984-27.062,19.563-23.239l4.463,0.392c13.517,0.615,31.199-2.174,41.587-7c22.362-10.376,35.622-27.7,13.572-23.148c-50.297,10.376-53.755-6.655-53.755-6.655c53.111-78.803,75.313-178.836,56.149-203.322 C352.514-5.534,262.036,26.049,260.522,26.869l-0.482,0.089c-9.938-2.062-21.06-3.294-33.554-3.496c-22.761-0.374-40.032,5.967-53.133,15.904c0,0-161.408-66.498-153.899,83.628c1.597,31.936,45.777,241.655,98.47,178.31 c19.259-23.163,37.871-42.748,37.871-42.748c9.242,6.14,20.307,9.272,31.912,8.147l0.897-0.765c-0.281,2.876-0.157,5.689,0.359,9.019c-13.572,15.167-9.584,17.83-36.723,23.416c-27.457,5.659-11.326,15.734-0.797,18.367c12.768,3.193,42.305,7.716,62.268-20.224 l-0.795,3.188c5.325,4.26,4.965,30.619,5.72,49.452c0.756,18.834,2.017,36.409,5.856,46.771c3.839,10.36,8.369,37.05,44.036,29.406c29.809-6.388,52.6-15.582,54.677-101.107\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#336791;stroke:none;\" d=\"M402.395,271.23c-50.302,10.376-53.76-6.655-53.76-6.655c53.111-78.808,75.313-178.843,56.153-203.326c-52.27-66.785-142.752-35.2-144.262-34.38l-0.486,0.087c-9.938-2.063-21.06-3.292-33.56-3.496c-22.761-0.373-40.026,5.967-53.127,15.902 c0,0-161.411-66.495-153.904,83.63c1.597,31.938,45.776,241.657,98.471,178.312c19.26-23.163,37.869-42.748,37.869-42.748c9.243,6.14,20.308,9.272,31.908,8.147l0.901-0.765c-0.28,2.876-0.152,5.689,0.361,9.019c-13.575,15.167-9.586,17.83-36.723,23.416 c-27.459,5.659-11.328,15.734-0.796,18.367c12.768,3.193,42.307,7.716,62.266-20.224l-0.796,3.188c5.319,4.26,9.054,27.711,8.428,48.969c-0.626,21.259-1.044,35.854,3.147,47.254c4.191,11.4,8.368,37.05,44.042,29.406c29.809-6.388,45.256-22.942,47.405-50.555 c1.525-19.631,4.976-16.729,5.194-34.28l2.768-8.309c3.192-26.611,0.507-35.196,18.872-31.203l4.463,0.392c13.517,0.615,31.208-2.174,41.591-7c22.358-10.376,35.618-27.7,13.573-23.148z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M215.866,286.484c-1.385,49.516,0.348,99.377,5.193,111.495c4.848,12.118,15.223,35.688,50.9,28.045c29.806-6.39,40.651-18.756,45.357-46.051c3.466-20.082,10.148-75.854,11.005-87.281\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M173.104,38.256c0,0-161.521-66.016-154.012,84.109c1.597,31.938,45.779,241.664,98.473,178.316c19.256-23.166,36.671-41.335,36.671-41.335\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M260.349,26.207c-5.591,1.753,89.848-34.889,144.087,34.417c19.159,24.484-3.043,124.519-56.153,203.329\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke-linejoin:bevel;\" d=\"M348.282,263.953c0,0,3.461,17.036,53.764,6.653c22.04-4.552,8.776,12.774-13.577,23.155c-18.345,8.514-59.474,10.696-60.146-1.069c-1.729-30.355,21.647-21.133,19.96-28.739c-1.525-6.85-11.979-13.573-18.894-30.338 c-6.037-14.633-82.796-126.849,21.287-110.183c3.813-0.789-27.146-99.002-124.553-100.599c-97.385-1.597-94.19,119.762-94.19,119.762\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M188.604,274.334c-13.577,15.166-9.584,17.829-36.723,23.417c-27.459,5.66-11.326,15.733-0.797,18.365c12.768,3.195,42.307,7.718,62.266-20.229c6.078-8.509-0.036-22.086-8.385-25.547c-4.034-1.671-9.428-3.765-16.361,3.994z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M187.715,274.069c-1.368-8.917,2.93-19.528,7.536-31.942c6.922-18.626,22.893-37.255,10.117-96.339c-9.523-44.029-73.396-9.163-73.436-3.193c-0.039,5.968,2.889,30.26-1.067,58.548c-5.162,36.913,23.488,68.132,56.479,64.938\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#FFFFFF;stroke-width:4.155;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M172.517,141.7c-0.288,2.039,3.733,7.48,8.976,8.207c5.234,0.73,9.714-3.522,9.998-5.559c0.284-2.039-3.732-4.285-8.977-5.015c-5.237-0.731-9.719,0.333-9.996,2.367z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#FFFFFF;stroke-width:2.0775;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M331.941,137.543c0.284,2.039-3.732,7.48-8.976,8.207c-5.238,0.73-9.718-3.522-10.005-5.559c-0.277-2.039,3.74-4.285,8.979-5.015c5.239-0.73,9.718,0.333,10.002,2.368z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M350.676,123.432c0.863,15.994-3.445,26.888-3.988,43.914c-0.804,24.748,11.799,53.074-7.191,81.435\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke-width:3;\" d=\"M0,60.232\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 432.1 445.4\" style=\"enable-background:new 0 0 432.1 445.4;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n .st0{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;}\n .st1{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:bevel;}\n .st2{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:4.155;}\n .st3{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:2.0775;}\n .st4{fill:none;stroke:#FFFFFF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;}\n\u003c/style\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"orginal\"\u003e\n\u003c/g\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_x0020_3\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M215.9,286.5c-1.4,49.5,0.3,99.4,5.2,111.5c4.8,12.1,15.2,35.7,50.9,28c29.8-6.4,40.7-18.8,45.4-46.1\u0026#xA; c3.5-20.1,10.1-75.9,11-87.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M173.1,38.3c0,0-161.5-66-154,84.1c1.6,31.9,45.8,241.7,98.5,178.3c19.3-23.2,36.7-41.3,36.7-41.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M260.3,26.2c-5.6,1.8,89.8-34.9,144.1,34.4c19.2,24.5-3,124.5-56.2,203.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st1\" d=\"M348.3,264c0,0,3.5,17,53.8,6.7c22-4.6,8.8,12.8-13.6,23.2c-18.3,8.5-59.5,10.7-60.1-1.1\u0026#xA; C326.6,262.3,350,271.6,348.3,264c-1.5-6.9-12-13.6-18.9-30.3c-6-14.6-82.8-126.8,21.3-110.2c3.8-0.8-27.1-99-124.6-100.6\u0026#xA; c-97.4-1.6-94.2,119.8-94.2,119.8\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M188.6,274.3c-13.6,15.2-9.6,17.8-36.7,23.4c-27.5,5.7-11.3,15.7-0.8,18.4c12.8,3.2,42.3,7.7,62.3-20.2\u0026#xA; c6.1-8.5,0-22.1-8.4-25.5C200.9,268.7,195.5,266.6,188.6,274.3L188.6,274.3z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M187.7,274.1c-1.4-8.9,2.9-19.5,7.5-31.9c6.9-18.6,22.9-37.3,10.1-96.3c-9.5-44-73.4-9.2-73.4-3.2\u0026#xA; c0,6,2.9,30.3-1.1,58.5c-5.2,36.9,23.5,68.1,56.5,64.9\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st2\" d=\"M172.5,141.7c-0.3,2,3.7,7.5,9,8.2c5.2,0.7,9.7-3.5,10-5.6c0.3-2-3.7-4.3-9-5\u0026#xA; C177.3,138.6,172.8,139.7,172.5,141.7L172.5,141.7z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st3\" d=\"M331.9,137.5c0.3,2-3.7,7.5-9,8.2c-5.2,0.7-9.7-3.5-10-5.6c-0.3-2,3.7-4.3,9-5S331.7,135.5,331.9,137.5\u0026#xA; L331.9,137.5z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M350.7,123.4c0.9,16-3.4,26.9-4,43.9c-0.8,24.7,11.8,53.1-7.2,81.4\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st4\" d=\"M0,60.2\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003c/svg\u003e" + }, + "model": { + "version": "2.4.2" + }, + "name": "pg-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "App Definition and Development", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#336791", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"432.071pt\" height=\"445.383pt\" viewBox=\"0 0 432.071 445.383\" xml:space=\"preserve\"\u003e\n\u003cg id=\"orginal\" style=\"fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;\"\u003e\n\t\u003c/g\u003e\n\u003cg id=\"Layer_x0020_3\" style=\"fill-rule:nonzero;clip-rule:nonzero;fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;\"\u003e\n\u003cpath style=\"fill:#000000;stroke:#000000;stroke-width:37.3953;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M323.205,324.227c2.833-23.601,1.984-27.062,19.563-23.239l4.463,0.392c13.517,0.615,31.199-2.174,41.587-7c22.362-10.376,35.622-27.7,13.572-23.148c-50.297,10.376-53.755-6.655-53.755-6.655c53.111-78.803,75.313-178.836,56.149-203.322 C352.514-5.534,262.036,26.049,260.522,26.869l-0.482,0.089c-9.938-2.062-21.06-3.294-33.554-3.496c-22.761-0.374-40.032,5.967-53.133,15.904c0,0-161.408-66.498-153.899,83.628c1.597,31.936,45.777,241.655,98.47,178.31 c19.259-23.163,37.871-42.748,37.871-42.748c9.242,6.14,20.307,9.272,31.912,8.147l0.897-0.765c-0.281,2.876-0.157,5.689,0.359,9.019c-13.572,15.167-9.584,17.83-36.723,23.416c-27.457,5.659-11.326,15.734-0.797,18.367c12.768,3.193,42.305,7.716,62.268-20.224 l-0.795,3.188c5.325,4.26,4.965,30.619,5.72,49.452c0.756,18.834,2.017,36.409,5.856,46.771c3.839,10.36,8.369,37.05,44.036,29.406c29.809-6.388,52.6-15.582,54.677-101.107\"/\u003e\n\u003cpath style=\"fill:#336791;stroke:none;\" d=\"M402.395,271.23c-50.302,10.376-53.76-6.655-53.76-6.655c53.111-78.808,75.313-178.843,56.153-203.326c-52.27-66.785-142.752-35.2-144.262-34.38l-0.486,0.087c-9.938-2.063-21.06-3.292-33.56-3.496c-22.761-0.373-40.026,5.967-53.127,15.902 c0,0-161.411-66.495-153.904,83.63c1.597,31.938,45.776,241.657,98.471,178.312c19.26-23.163,37.869-42.748,37.869-42.748c9.243,6.14,20.308,9.272,31.908,8.147l0.901-0.765c-0.28,2.876-0.152,5.689,0.361,9.019c-13.575,15.167-9.586,17.83-36.723,23.416 c-27.459,5.659-11.328,15.734-0.796,18.367c12.768,3.193,42.307,7.716,62.266-20.224l-0.796,3.188c5.319,4.26,9.054,27.711,8.428,48.969c-0.626,21.259-1.044,35.854,3.147,47.254c4.191,11.4,8.368,37.05,44.042,29.406c29.809-6.388,45.256-22.942,47.405-50.555 c1.525-19.631,4.976-16.729,5.194-34.28l2.768-8.309c3.192-26.611,0.507-35.196,18.872-31.203l4.463,0.392c13.517,0.615,31.208-2.174,41.591-7c22.358-10.376,35.618-27.7,13.573-23.148z\"/\u003e\n\u003cpath d=\"M215.866,286.484c-1.385,49.516,0.348,99.377,5.193,111.495c4.848,12.118,15.223,35.688,50.9,28.045c29.806-6.39,40.651-18.756,45.357-46.051c3.466-20.082,10.148-75.854,11.005-87.281\"/\u003e\n\u003cpath d=\"M173.104,38.256c0,0-161.521-66.016-154.012,84.109c1.597,31.938,45.779,241.664,98.473,178.316c19.256-23.166,36.671-41.335,36.671-41.335\"/\u003e\n\u003cpath d=\"M260.349,26.207c-5.591,1.753,89.848-34.889,144.087,34.417c19.159,24.484-3.043,124.519-56.153,203.329\"/\u003e\n\u003cpath style=\"stroke-linejoin:bevel;\" d=\"M348.282,263.953c0,0,3.461,17.036,53.764,6.653c22.04-4.552,8.776,12.774-13.577,23.155c-18.345,8.514-59.474,10.696-60.146-1.069c-1.729-30.355,21.647-21.133,19.96-28.739c-1.525-6.85-11.979-13.573-18.894-30.338 c-6.037-14.633-82.796-126.849,21.287-110.183c3.813-0.789-27.146-99.002-124.553-100.599c-97.385-1.597-94.19,119.762-94.19,119.762\"/\u003e\n\u003cpath d=\"M188.604,274.334c-13.577,15.166-9.584,17.829-36.723,23.417c-27.459,5.66-11.326,15.733-0.797,18.365c12.768,3.195,42.307,7.718,62.266-20.229c6.078-8.509-0.036-22.086-8.385-25.547c-4.034-1.671-9.428-3.765-16.361,3.994z\"/\u003e\n\u003cpath d=\"M187.715,274.069c-1.368-8.917,2.93-19.528,7.536-31.942c6.922-18.626,22.893-37.255,10.117-96.339c-9.523-44.029-73.396-9.163-73.436-3.193c-0.039,5.968,2.889,30.26-1.067,58.548c-5.162,36.913,23.488,68.132,56.479,64.938\"/\u003e\n\u003cpath style=\"fill:#FFFFFF;stroke-width:4.155;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M172.517,141.7c-0.288,2.039,3.733,7.48,8.976,8.207c5.234,0.73,9.714-3.522,9.998-5.559c0.284-2.039-3.732-4.285-8.977-5.015c-5.237-0.731-9.719,0.333-9.996,2.367z\"/\u003e\n\u003cpath style=\"fill:#FFFFFF;stroke-width:2.0775;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M331.941,137.543c0.284,2.039-3.732,7.48-8.976,8.207c-5.238,0.73-9.718-3.522-10.005-5.559c-0.277-2.039,3.74-4.285,8.979-5.015c5.239-0.73,9.718,0.333,10.002,2.368z\"/\u003e\n\u003cpath d=\"M350.676,123.432c0.863,15.994-3.445,26.888-3.988,43.914c-0.804,24.748,11.799,53.074-7.191,81.435\"/\u003e\n\u003cpath style=\"stroke-width:3;\" d=\"M0,60.232\"/\u003e\n\u003c/g\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 432.1 445.4\" style=\"enable-background:new 0 0 432.1 445.4;\" xml:space=\"preserve\" width='432.1' height='445.4'\u003e\n\u003cstyle type=\"text/css\"\u003e\n .st0{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;}\n .st1{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:bevel;}\n .st2{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:4.155;}\n .st3{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:2.0775;}\n .st4{fill:none;stroke:#FFFFFF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;}\n\u003c/style\u003e\n\u003cg id=\"orginal\"\u003e\n\u003c/g\u003e\n\u003cg id=\"Layer_x0020_3\"\u003e\n \u003cpath class=\"st0\" d=\"M215.9,286.5c-1.4,49.5,0.3,99.4,5.2,111.5c4.8,12.1,15.2,35.7,50.9,28c29.8-6.4,40.7-18.8,45.4-46.1\n c3.5-20.1,10.1-75.9,11-87.3\"/\u003e\n \u003cpath class=\"st0\" d=\"M173.1,38.3c0,0-161.5-66-154,84.1c1.6,31.9,45.8,241.7,98.5,178.3c19.3-23.2,36.7-41.3,36.7-41.3\"/\u003e\n \u003cpath class=\"st0\" d=\"M260.3,26.2c-5.6,1.8,89.8-34.9,144.1,34.4c19.2,24.5-3,124.5-56.2,203.3\"/\u003e\n \u003cpath class=\"st1\" d=\"M348.3,264c0,0,3.5,17,53.8,6.7c22-4.6,8.8,12.8-13.6,23.2c-18.3,8.5-59.5,10.7-60.1-1.1\n C326.6,262.3,350,271.6,348.3,264c-1.5-6.9-12-13.6-18.9-30.3c-6-14.6-82.8-126.8,21.3-110.2c3.8-0.8-27.1-99-124.6-100.6\n c-97.4-1.6-94.2,119.8-94.2,119.8\"/\u003e\n \u003cpath class=\"st0\" d=\"M188.6,274.3c-13.6,15.2-9.6,17.8-36.7,23.4c-27.5,5.7-11.3,15.7-0.8,18.4c12.8,3.2,42.3,7.7,62.3-20.2\n c6.1-8.5,0-22.1-8.4-25.5C200.9,268.7,195.5,266.6,188.6,274.3L188.6,274.3z\"/\u003e\n \u003cpath class=\"st0\" d=\"M187.7,274.1c-1.4-8.9,2.9-19.5,7.5-31.9c6.9-18.6,22.9-37.3,10.1-96.3c-9.5-44-73.4-9.2-73.4-3.2\n c0,6,2.9,30.3-1.1,58.5c-5.2,36.9,23.5,68.1,56.5,64.9\"/\u003e\n \u003cpath class=\"st2\" d=\"M172.5,141.7c-0.3,2,3.7,7.5,9,8.2c5.2,0.7,9.7-3.5,10-5.6c0.3-2-3.7-4.3-9-5\n C177.3,138.6,172.8,139.7,172.5,141.7L172.5,141.7z\"/\u003e\n \u003cpath class=\"st3\" d=\"M331.9,137.5c0.3,2-3.7,7.5-9,8.2c-5.2,0.7-9.7-3.5-10-5.6c-0.3-2,3.7-4.3,9-5S331.7,135.5,331.9,137.5\n L331.9,137.5z\"/\u003e\n \u003cpath class=\"st0\" d=\"M350.7,123.4c0.9,16-3.4,26.9-4,43.9c-0.8,24.7,11.8,53.1-7.2,81.4\"/\u003e\n \u003cpath class=\"st4\" d=\"M0,60.2\"/\u003e\n\u003c/g\u003e\n\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PerconaPGUpgrade.json b/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PerconaPGUpgrade.json new file mode 100644 index 00000000000..639a9e1a127 --- /dev/null +++ b/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PerconaPGUpgrade.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "PerconaPGUpgrade", + "schema": "{\n \"description\": \"PerconaPGUpgrade is the Schema for the perconapgupgrades API\",\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"affinity\": {\n \"description\": \"Scheduling constraints of the PGUpgrade pod.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fromPostgresVersion\": {\n \"description\": \"The major version of PostgreSQL before the upgrade.\",\n \"maximum\": 16,\n \"minimum\": 12,\n \"type\": \"integer\"\n },\n \"image\": {\n \"description\": \"The image name to use for major PostgreSQL upgrades.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"ImagePullPolicy is used to determine when Kubernetes will attempt to\\npull (download) container images.\\nMore info: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\",\n \"enum\": [\n \"Always\",\n \"Never\",\n \"IfNotPresent\"\n ],\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"The image pull secrets used to pull from a private registry.\\nChanging this value causes all running PGUpgrade pods to restart.\\nhttps://k8s.io/docs/tasks/configure-pod-container/pull-image-private-registry/\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"initContainers\": {\n \"description\": \"Init container to run before the upgrade container.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"metadata\": {\n \"description\": \"Metadata contains metadata for custom resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"postgresClusterName\": {\n \"description\": \"The name of the cluster to be updated\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class name for the PGUpgrade pod. Changing this\\nvalue causes PGUpgrade pod to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resource requirements for the PGUpgrade container.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"toPostgresImage\": {\n \"description\": \"The image name to use for PostgreSQL containers after upgrade.\\nWhen omitted, the value comes from an operator environment variable.\",\n \"type\": \"string\"\n },\n \"toPostgresVersion\": {\n \"description\": \"The major version of PostgreSQL to be upgraded to.\",\n \"maximum\": 16,\n \"minimum\": 13,\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of the PGUpgrade pod.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"The list of volume mounts to mount to upgrade pod.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"fromPostgresVersion\",\n \"image\",\n \"postgresClusterName\",\n \"toPostgresVersion\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"metadata\",\n \"spec\"\n ],\n \"title\": \"Percona PG Upgrade\",\n \"type\": \"object\"\n}", + "version": "pgv2.percona.com/v2" + }, + "configuration": null, + "description": "", + "displayName": "Percona PG Upgrade", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/percona/percona-helm-charts/releases/download/pg-operator-2.4.2/pg-operator-2.4.2.tgz" + }, + "model": { + "category": { + "name": "Database" + }, + "displayName": "Percona Postgres Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#336791", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/percona/percona-helm-charts/releases/download/pg-operator-2.4.2/pg-operator-2.4.2.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 432.071 445.383\" xml:space=\"preserve\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"orginal\" style=\"fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;\"\u003e\n\u0026#x9;\u003c/g\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_x0020_3\" style=\"fill-rule:nonzero;clip-rule:nonzero;fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#000000;stroke:#000000;stroke-width:37.3953;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M323.205,324.227c2.833-23.601,1.984-27.062,19.563-23.239l4.463,0.392c13.517,0.615,31.199-2.174,41.587-7c22.362-10.376,35.622-27.7,13.572-23.148c-50.297,10.376-53.755-6.655-53.755-6.655c53.111-78.803,75.313-178.836,56.149-203.322 C352.514-5.534,262.036,26.049,260.522,26.869l-0.482,0.089c-9.938-2.062-21.06-3.294-33.554-3.496c-22.761-0.374-40.032,5.967-53.133,15.904c0,0-161.408-66.498-153.899,83.628c1.597,31.936,45.777,241.655,98.47,178.31 c19.259-23.163,37.871-42.748,37.871-42.748c9.242,6.14,20.307,9.272,31.912,8.147l0.897-0.765c-0.281,2.876-0.157,5.689,0.359,9.019c-13.572,15.167-9.584,17.83-36.723,23.416c-27.457,5.659-11.326,15.734-0.797,18.367c12.768,3.193,42.305,7.716,62.268-20.224 l-0.795,3.188c5.325,4.26,4.965,30.619,5.72,49.452c0.756,18.834,2.017,36.409,5.856,46.771c3.839,10.36,8.369,37.05,44.036,29.406c29.809-6.388,52.6-15.582,54.677-101.107\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#336791;stroke:none;\" d=\"M402.395,271.23c-50.302,10.376-53.76-6.655-53.76-6.655c53.111-78.808,75.313-178.843,56.153-203.326c-52.27-66.785-142.752-35.2-144.262-34.38l-0.486,0.087c-9.938-2.063-21.06-3.292-33.56-3.496c-22.761-0.373-40.026,5.967-53.127,15.902 c0,0-161.411-66.495-153.904,83.63c1.597,31.938,45.776,241.657,98.471,178.312c19.26-23.163,37.869-42.748,37.869-42.748c9.243,6.14,20.308,9.272,31.908,8.147l0.901-0.765c-0.28,2.876-0.152,5.689,0.361,9.019c-13.575,15.167-9.586,17.83-36.723,23.416 c-27.459,5.659-11.328,15.734-0.796,18.367c12.768,3.193,42.307,7.716,62.266-20.224l-0.796,3.188c5.319,4.26,9.054,27.711,8.428,48.969c-0.626,21.259-1.044,35.854,3.147,47.254c4.191,11.4,8.368,37.05,44.042,29.406c29.809-6.388,45.256-22.942,47.405-50.555 c1.525-19.631,4.976-16.729,5.194-34.28l2.768-8.309c3.192-26.611,0.507-35.196,18.872-31.203l4.463,0.392c13.517,0.615,31.208-2.174,41.591-7c22.358-10.376,35.618-27.7,13.573-23.148z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M215.866,286.484c-1.385,49.516,0.348,99.377,5.193,111.495c4.848,12.118,15.223,35.688,50.9,28.045c29.806-6.39,40.651-18.756,45.357-46.051c3.466-20.082,10.148-75.854,11.005-87.281\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M173.104,38.256c0,0-161.521-66.016-154.012,84.109c1.597,31.938,45.779,241.664,98.473,178.316c19.256-23.166,36.671-41.335,36.671-41.335\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M260.349,26.207c-5.591,1.753,89.848-34.889,144.087,34.417c19.159,24.484-3.043,124.519-56.153,203.329\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke-linejoin:bevel;\" d=\"M348.282,263.953c0,0,3.461,17.036,53.764,6.653c22.04-4.552,8.776,12.774-13.577,23.155c-18.345,8.514-59.474,10.696-60.146-1.069c-1.729-30.355,21.647-21.133,19.96-28.739c-1.525-6.85-11.979-13.573-18.894-30.338 c-6.037-14.633-82.796-126.849,21.287-110.183c3.813-0.789-27.146-99.002-124.553-100.599c-97.385-1.597-94.19,119.762-94.19,119.762\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M188.604,274.334c-13.577,15.166-9.584,17.829-36.723,23.417c-27.459,5.66-11.326,15.733-0.797,18.365c12.768,3.195,42.307,7.718,62.266-20.229c6.078-8.509-0.036-22.086-8.385-25.547c-4.034-1.671-9.428-3.765-16.361,3.994z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M187.715,274.069c-1.368-8.917,2.93-19.528,7.536-31.942c6.922-18.626,22.893-37.255,10.117-96.339c-9.523-44.029-73.396-9.163-73.436-3.193c-0.039,5.968,2.889,30.26-1.067,58.548c-5.162,36.913,23.488,68.132,56.479,64.938\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#FFFFFF;stroke-width:4.155;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M172.517,141.7c-0.288,2.039,3.733,7.48,8.976,8.207c5.234,0.73,9.714-3.522,9.998-5.559c0.284-2.039-3.732-4.285-8.977-5.015c-5.237-0.731-9.719,0.333-9.996,2.367z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#FFFFFF;stroke-width:2.0775;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M331.941,137.543c0.284,2.039-3.732,7.48-8.976,8.207c-5.238,0.73-9.718-3.522-10.005-5.559c-0.277-2.039,3.74-4.285,8.979-5.015c5.239-0.73,9.718,0.333,10.002,2.368z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M350.676,123.432c0.863,15.994-3.445,26.888-3.988,43.914c-0.804,24.748,11.799,53.074-7.191,81.435\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke-width:3;\" d=\"M0,60.232\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 432.1 445.4\" style=\"enable-background:new 0 0 432.1 445.4;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n .st0{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;}\n .st1{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:bevel;}\n .st2{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:4.155;}\n .st3{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:2.0775;}\n .st4{fill:none;stroke:#FFFFFF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;}\n\u003c/style\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"orginal\"\u003e\n\u003c/g\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_x0020_3\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M215.9,286.5c-1.4,49.5,0.3,99.4,5.2,111.5c4.8,12.1,15.2,35.7,50.9,28c29.8-6.4,40.7-18.8,45.4-46.1\u0026#xA; c3.5-20.1,10.1-75.9,11-87.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M173.1,38.3c0,0-161.5-66-154,84.1c1.6,31.9,45.8,241.7,98.5,178.3c19.3-23.2,36.7-41.3,36.7-41.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M260.3,26.2c-5.6,1.8,89.8-34.9,144.1,34.4c19.2,24.5-3,124.5-56.2,203.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st1\" d=\"M348.3,264c0,0,3.5,17,53.8,6.7c22-4.6,8.8,12.8-13.6,23.2c-18.3,8.5-59.5,10.7-60.1-1.1\u0026#xA; C326.6,262.3,350,271.6,348.3,264c-1.5-6.9-12-13.6-18.9-30.3c-6-14.6-82.8-126.8,21.3-110.2c3.8-0.8-27.1-99-124.6-100.6\u0026#xA; c-97.4-1.6-94.2,119.8-94.2,119.8\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M188.6,274.3c-13.6,15.2-9.6,17.8-36.7,23.4c-27.5,5.7-11.3,15.7-0.8,18.4c12.8,3.2,42.3,7.7,62.3-20.2\u0026#xA; c6.1-8.5,0-22.1-8.4-25.5C200.9,268.7,195.5,266.6,188.6,274.3L188.6,274.3z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M187.7,274.1c-1.4-8.9,2.9-19.5,7.5-31.9c6.9-18.6,22.9-37.3,10.1-96.3c-9.5-44-73.4-9.2-73.4-3.2\u0026#xA; c0,6,2.9,30.3-1.1,58.5c-5.2,36.9,23.5,68.1,56.5,64.9\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st2\" d=\"M172.5,141.7c-0.3,2,3.7,7.5,9,8.2c5.2,0.7,9.7-3.5,10-5.6c0.3-2-3.7-4.3-9-5\u0026#xA; C177.3,138.6,172.8,139.7,172.5,141.7L172.5,141.7z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st3\" d=\"M331.9,137.5c0.3,2-3.7,7.5-9,8.2c-5.2,0.7-9.7-3.5-10-5.6c-0.3-2,3.7-4.3,9-5S331.7,135.5,331.9,137.5\u0026#xA; L331.9,137.5z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M350.7,123.4c0.9,16-3.4,26.9-4,43.9c-0.8,24.7,11.8,53.1-7.2,81.4\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st4\" d=\"M0,60.2\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003c/svg\u003e" + }, + "model": { + "version": "2.4.2" + }, + "name": "pg-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "App Definition and Development", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#336791", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"432.071pt\" height=\"445.383pt\" viewBox=\"0 0 432.071 445.383\" xml:space=\"preserve\"\u003e\n\u003cg id=\"orginal\" style=\"fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;\"\u003e\n\t\u003c/g\u003e\n\u003cg id=\"Layer_x0020_3\" style=\"fill-rule:nonzero;clip-rule:nonzero;fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;\"\u003e\n\u003cpath style=\"fill:#000000;stroke:#000000;stroke-width:37.3953;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M323.205,324.227c2.833-23.601,1.984-27.062,19.563-23.239l4.463,0.392c13.517,0.615,31.199-2.174,41.587-7c22.362-10.376,35.622-27.7,13.572-23.148c-50.297,10.376-53.755-6.655-53.755-6.655c53.111-78.803,75.313-178.836,56.149-203.322 C352.514-5.534,262.036,26.049,260.522,26.869l-0.482,0.089c-9.938-2.062-21.06-3.294-33.554-3.496c-22.761-0.374-40.032,5.967-53.133,15.904c0,0-161.408-66.498-153.899,83.628c1.597,31.936,45.777,241.655,98.47,178.31 c19.259-23.163,37.871-42.748,37.871-42.748c9.242,6.14,20.307,9.272,31.912,8.147l0.897-0.765c-0.281,2.876-0.157,5.689,0.359,9.019c-13.572,15.167-9.584,17.83-36.723,23.416c-27.457,5.659-11.326,15.734-0.797,18.367c12.768,3.193,42.305,7.716,62.268-20.224 l-0.795,3.188c5.325,4.26,4.965,30.619,5.72,49.452c0.756,18.834,2.017,36.409,5.856,46.771c3.839,10.36,8.369,37.05,44.036,29.406c29.809-6.388,52.6-15.582,54.677-101.107\"/\u003e\n\u003cpath style=\"fill:#336791;stroke:none;\" d=\"M402.395,271.23c-50.302,10.376-53.76-6.655-53.76-6.655c53.111-78.808,75.313-178.843,56.153-203.326c-52.27-66.785-142.752-35.2-144.262-34.38l-0.486,0.087c-9.938-2.063-21.06-3.292-33.56-3.496c-22.761-0.373-40.026,5.967-53.127,15.902 c0,0-161.411-66.495-153.904,83.63c1.597,31.938,45.776,241.657,98.471,178.312c19.26-23.163,37.869-42.748,37.869-42.748c9.243,6.14,20.308,9.272,31.908,8.147l0.901-0.765c-0.28,2.876-0.152,5.689,0.361,9.019c-13.575,15.167-9.586,17.83-36.723,23.416 c-27.459,5.659-11.328,15.734-0.796,18.367c12.768,3.193,42.307,7.716,62.266-20.224l-0.796,3.188c5.319,4.26,9.054,27.711,8.428,48.969c-0.626,21.259-1.044,35.854,3.147,47.254c4.191,11.4,8.368,37.05,44.042,29.406c29.809-6.388,45.256-22.942,47.405-50.555 c1.525-19.631,4.976-16.729,5.194-34.28l2.768-8.309c3.192-26.611,0.507-35.196,18.872-31.203l4.463,0.392c13.517,0.615,31.208-2.174,41.591-7c22.358-10.376,35.618-27.7,13.573-23.148z\"/\u003e\n\u003cpath d=\"M215.866,286.484c-1.385,49.516,0.348,99.377,5.193,111.495c4.848,12.118,15.223,35.688,50.9,28.045c29.806-6.39,40.651-18.756,45.357-46.051c3.466-20.082,10.148-75.854,11.005-87.281\"/\u003e\n\u003cpath d=\"M173.104,38.256c0,0-161.521-66.016-154.012,84.109c1.597,31.938,45.779,241.664,98.473,178.316c19.256-23.166,36.671-41.335,36.671-41.335\"/\u003e\n\u003cpath d=\"M260.349,26.207c-5.591,1.753,89.848-34.889,144.087,34.417c19.159,24.484-3.043,124.519-56.153,203.329\"/\u003e\n\u003cpath style=\"stroke-linejoin:bevel;\" d=\"M348.282,263.953c0,0,3.461,17.036,53.764,6.653c22.04-4.552,8.776,12.774-13.577,23.155c-18.345,8.514-59.474,10.696-60.146-1.069c-1.729-30.355,21.647-21.133,19.96-28.739c-1.525-6.85-11.979-13.573-18.894-30.338 c-6.037-14.633-82.796-126.849,21.287-110.183c3.813-0.789-27.146-99.002-124.553-100.599c-97.385-1.597-94.19,119.762-94.19,119.762\"/\u003e\n\u003cpath d=\"M188.604,274.334c-13.577,15.166-9.584,17.829-36.723,23.417c-27.459,5.66-11.326,15.733-0.797,18.365c12.768,3.195,42.307,7.718,62.266-20.229c6.078-8.509-0.036-22.086-8.385-25.547c-4.034-1.671-9.428-3.765-16.361,3.994z\"/\u003e\n\u003cpath d=\"M187.715,274.069c-1.368-8.917,2.93-19.528,7.536-31.942c6.922-18.626,22.893-37.255,10.117-96.339c-9.523-44.029-73.396-9.163-73.436-3.193c-0.039,5.968,2.889,30.26-1.067,58.548c-5.162,36.913,23.488,68.132,56.479,64.938\"/\u003e\n\u003cpath style=\"fill:#FFFFFF;stroke-width:4.155;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M172.517,141.7c-0.288,2.039,3.733,7.48,8.976,8.207c5.234,0.73,9.714-3.522,9.998-5.559c0.284-2.039-3.732-4.285-8.977-5.015c-5.237-0.731-9.719,0.333-9.996,2.367z\"/\u003e\n\u003cpath style=\"fill:#FFFFFF;stroke-width:2.0775;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M331.941,137.543c0.284,2.039-3.732,7.48-8.976,8.207c-5.238,0.73-9.718-3.522-10.005-5.559c-0.277-2.039,3.74-4.285,8.979-5.015c5.239-0.73,9.718,0.333,10.002,2.368z\"/\u003e\n\u003cpath d=\"M350.676,123.432c0.863,15.994-3.445,26.888-3.988,43.914c-0.804,24.748,11.799,53.074-7.191,81.435\"/\u003e\n\u003cpath style=\"stroke-width:3;\" d=\"M0,60.232\"/\u003e\n\u003c/g\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 432.1 445.4\" style=\"enable-background:new 0 0 432.1 445.4;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n .st0{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;}\n .st1{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:bevel;}\n .st2{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:4.155;}\n .st3{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:2.0775;}\n .st4{fill:none;stroke:#FFFFFF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;}\n\u003c/style\u003e\n\u003cg id=\"orginal\"\u003e\n\u003c/g\u003e\n\u003cg id=\"Layer_x0020_3\"\u003e\n \u003cpath class=\"st0\" d=\"M215.9,286.5c-1.4,49.5,0.3,99.4,5.2,111.5c4.8,12.1,15.2,35.7,50.9,28c29.8-6.4,40.7-18.8,45.4-46.1\n c3.5-20.1,10.1-75.9,11-87.3\"/\u003e\n \u003cpath class=\"st0\" d=\"M173.1,38.3c0,0-161.5-66-154,84.1c1.6,31.9,45.8,241.7,98.5,178.3c19.3-23.2,36.7-41.3,36.7-41.3\"/\u003e\n \u003cpath class=\"st0\" d=\"M260.3,26.2c-5.6,1.8,89.8-34.9,144.1,34.4c19.2,24.5-3,124.5-56.2,203.3\"/\u003e\n \u003cpath class=\"st1\" d=\"M348.3,264c0,0,3.5,17,53.8,6.7c22-4.6,8.8,12.8-13.6,23.2c-18.3,8.5-59.5,10.7-60.1-1.1\n C326.6,262.3,350,271.6,348.3,264c-1.5-6.9-12-13.6-18.9-30.3c-6-14.6-82.8-126.8,21.3-110.2c3.8-0.8-27.1-99-124.6-100.6\n c-97.4-1.6-94.2,119.8-94.2,119.8\"/\u003e\n \u003cpath class=\"st0\" d=\"M188.6,274.3c-13.6,15.2-9.6,17.8-36.7,23.4c-27.5,5.7-11.3,15.7-0.8,18.4c12.8,3.2,42.3,7.7,62.3-20.2\n c6.1-8.5,0-22.1-8.4-25.5C200.9,268.7,195.5,266.6,188.6,274.3L188.6,274.3z\"/\u003e\n \u003cpath class=\"st0\" d=\"M187.7,274.1c-1.4-8.9,2.9-19.5,7.5-31.9c6.9-18.6,22.9-37.3,10.1-96.3c-9.5-44-73.4-9.2-73.4-3.2\n c0,6,2.9,30.3-1.1,58.5c-5.2,36.9,23.5,68.1,56.5,64.9\"/\u003e\n \u003cpath class=\"st2\" d=\"M172.5,141.7c-0.3,2,3.7,7.5,9,8.2c5.2,0.7,9.7-3.5,10-5.6c0.3-2-3.7-4.3-9-5\n C177.3,138.6,172.8,139.7,172.5,141.7L172.5,141.7z\"/\u003e\n \u003cpath class=\"st3\" d=\"M331.9,137.5c0.3,2-3.7,7.5-9,8.2c-5.2,0.7-9.7-3.5-10-5.6c-0.3-2,3.7-4.3,9-5S331.7,135.5,331.9,137.5\n L331.9,137.5z\"/\u003e\n \u003cpath class=\"st0\" d=\"M350.7,123.4c0.9,16-3.4,26.9-4,43.9c-0.8,24.7,11.8,53.1-7.2,81.4\"/\u003e\n \u003cpath class=\"st4\" d=\"M0,60.2\"/\u003e\n\u003c/g\u003e\n\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PostgresCluster.json b/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PostgresCluster.json new file mode 100644 index 00000000000..1228bb1d919 --- /dev/null +++ b/server/meshmodel/pg-operator/2.4.2/v1.0.0/components/PostgresCluster.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "PostgresCluster", + "schema": "{\n \"description\": \"PostgresCluster is the Schema for the postgresclusters API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"PostgresClusterSpec defines the desired state of PostgresCluster\",\n \"properties\": {\n \"backups\": {\n \"description\": \"PostgreSQL backup configuration\",\n \"properties\": {\n \"pgbackrest\": {\n \"description\": \"pgBackRest archive configuration\",\n \"properties\": {\n \"configuration\": {\n \"description\": \"Projected volumes containing custom pgBackRest configuration. These files are mounted\\nunder \\\"/etc/pgbackrest/conf.d\\\" alongside any pgBackRest configuration generated by the\\nPostgreSQL Operator:\\nhttps://pgbackrest.org/configuration.html\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"global\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Global pgBackRest configuration settings. These settings are included in the \\\"global\\\"\\nsection of the pgBackRest configuration generated by the PostgreSQL Operator, and then\\nmounted under \\\"/etc/pgbackrest/conf.d\\\":\\nhttps://pgbackrest.org/configuration.html\",\n \"type\": \"object\"\n },\n \"image\": {\n \"description\": \"The image name to use for pgBackRest containers. Utilized to run\\npgBackRest repository hosts and backups. The image may also be set using\\nthe RELATED_IMAGE_PGBACKREST environment variable\",\n \"type\": \"string\"\n },\n \"jobs\": {\n \"description\": \"Jobs field allows configuration for all backup jobs\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Scheduling constraints of pgBackRest backup Job pods.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class name for the pgBackRest backup Job pods.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resource limits for backup jobs. Includes manual, scheduled and replica\\ncreate backups\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security settings for PGBackRest pod.\",\n \"properties\": {\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of pgBackRest backup Job pods.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"ttlSecondsAfterFinished\": {\n \"description\": \"Limit the lifetime of a Job that has finished.\\nMore info: https://kubernetes.io/docs/concepts/workloads/controllers/job\",\n \"format\": \"int32\",\n \"minimum\": 60,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"manual\": {\n \"description\": \"Defines details for manual pgBackRest backup Jobs\",\n \"properties\": {\n \"options\": {\n \"description\": \"Command line options to include when running the pgBackRest backup command.\\nhttps://pgbackrest.org/command.html#command-backup\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"repoName\": {\n \"description\": \"The name of the pgBackRest repo to run the backup command against.\",\n \"pattern\": \"^repo[1-4]\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repoName\"\n ],\n \"type\": \"object\"\n },\n \"metadata\": {\n \"description\": \"Metadata contains metadata for custom resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"repoHost\": {\n \"description\": \"Defines configuration for a pgBackRest dedicated repository host. This section is only\\napplicable if at least one \\\"volume\\\" (i.e. PVC-based) repository is defined in the \\\"repos\\\"\\nsection, therefore enabling a dedicated repository host Deployment.\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Scheduling constraints of the Dedicated repo host pod.\\nChanging this value causes repo host to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class name for the pgBackRest repo host pod. Changing this value\\ncauses PostgreSQL to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resource requirements for a pgBackRest repository host\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security settings for PGBackRest pod.\",\n \"properties\": {\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"sshConfigMap\": {\n \"description\": \"ConfigMap containing custom SSH configuration.\\nDeprecated: Repository hosts use mTLS for encryption, authentication, and authorization.\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sshSecret\": {\n \"description\": \"Secret containing custom SSH keys.\\nDeprecated: Repository hosts use mTLS for encryption, authentication, and authorization.\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of a PgBackRest repo host pod. Changing this value causes a restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"Topology spread constraints of a Dedicated repo host pod. Changing this\\nvalue causes the repo host to restart.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods.\\nPods that match this label selector are counted to determine the number of pods\\nin their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nMatchLabelKeys cannot be set when LabelSelector isn't set.\\nKeys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P |\\n- if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P P |\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\\nwhen calculating pod topology spread skew. Options are:\\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating\\npod topology spread skew. Options are:\\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\\nhas a toleration, are included.\\n- Ignore: node taints are ignored. All nodes are included.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\\nthe spread constraint.\\n- DoNotSchedule (default) tells the scheduler not to schedule it.\\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n but giving higher precedence to topologies that would help reduce the\\n skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod\\nif and only if every possible node assignment for that pod would violate\\n\\\"MaxSkew\\\" on some topology.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 3/1/1:\\n| zone1 | zone2 | zone3 |\\n| P P P | P | P |\\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\\nwon't make it *more* imbalanced.\\nIt's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"repos\": {\n \"description\": \"Defines a pgBackRest repository\",\n \"items\": {\n \"description\": \"PGBackRestRepo represents a pgBackRest repository. Only one of its members may be specified.\",\n \"properties\": {\n \"azure\": {\n \"description\": \"Represents a pgBackRest repository that is created using Azure storage\",\n \"properties\": {\n \"container\": {\n \"description\": \"The Azure container utilized for the repository\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"container\"\n ],\n \"type\": \"object\"\n },\n \"gcs\": {\n \"description\": \"Represents a pgBackRest repository that is created using Google Cloud Storage\",\n \"properties\": {\n \"bucket\": {\n \"description\": \"The GCS bucket utilized for the repository\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"bucket\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The name of the repository\",\n \"pattern\": \"^repo[1-4]\",\n \"type\": \"string\"\n },\n \"s3\": {\n \"description\": \"RepoS3 represents a pgBackRest repository that is created using AWS S3 (or S3-compatible)\\nstorage\",\n \"properties\": {\n \"bucket\": {\n \"description\": \"The S3 bucket utilized for the repository\",\n \"type\": \"string\"\n },\n \"endpoint\": {\n \"description\": \"A valid endpoint corresponding to the specified region\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"The region corresponding to the S3 bucket\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"bucket\",\n \"endpoint\",\n \"region\"\n ],\n \"type\": \"object\"\n },\n \"schedules\": {\n \"description\": \"Defines the schedules for the pgBackRest backups\\nFull, Differential and Incremental backup types are supported:\\nhttps://pgbackrest.org/user-guide.html#concept/backup\",\n \"properties\": {\n \"differential\": {\n \"description\": \"Defines the Cron schedule for a differential pgBackRest backup.\\nFollows the standard Cron schedule syntax:\\nhttps://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax\",\n \"minLength\": 6,\n \"type\": \"string\"\n },\n \"full\": {\n \"description\": \"Defines the Cron schedule for a full pgBackRest backup.\\nFollows the standard Cron schedule syntax:\\nhttps://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax\",\n \"minLength\": 6,\n \"type\": \"string\"\n },\n \"incremental\": {\n \"description\": \"Defines the Cron schedule for an incremental pgBackRest backup.\\nFollows the standard Cron schedule syntax:\\nhttps://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax\",\n \"minLength\": 6,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volume\": {\n \"description\": \"Represents a pgBackRest repository that is created using a PersistentVolumeClaim\",\n \"properties\": {\n \"volumeClaimSpec\": {\n \"description\": \"Defines a PersistentVolumeClaim spec used to create and/or bind a volume\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"minItems\": 1,\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"required\": [\n \"storage\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"requests\"\n ],\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"accessModes\",\n \"resources\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"volumeClaimSpec\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"minItems\": 1,\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"restore\": {\n \"description\": \"Defines details for performing an in-place restore using pgBackRest\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Scheduling constraints of the pgBackRest restore Job.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"clusterName\": {\n \"description\": \"The name of an existing PostgresCluster to use as the data source for the new PostgresCluster.\\nDefaults to the name of the PostgresCluster being created if not provided.\",\n \"type\": \"string\"\n },\n \"clusterNamespace\": {\n \"description\": \"The namespace of the cluster specified as the data source using the clusterName field.\\nDefaults to the namespace of the PostgresCluster being created if not provided.\",\n \"type\": \"string\"\n },\n \"enabled\": {\n \"default\": false,\n \"description\": \"Whether or not in-place pgBackRest restores are enabled for this PostgresCluster.\",\n \"type\": \"boolean\"\n },\n \"options\": {\n \"description\": \"Command line options to include when running the pgBackRest restore command.\\nhttps://pgbackrest.org/command.html#command-restore\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class name for the pgBackRest restore Job pod. Changing this\\nvalue causes PostgreSQL to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/\",\n \"type\": \"string\"\n },\n \"repoName\": {\n \"description\": \"The name of the pgBackRest repo within the source PostgresCluster that contains the backups\\nthat should be utilized to perform a pgBackRest restore when initializing the data source\\nfor the new PostgresCluster.\",\n \"pattern\": \"^repo[1-4]\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resource requirements for the pgBackRest restore Job.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of the pgBackRest restore Job.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"enabled\",\n \"repoName\"\n ],\n \"type\": \"object\"\n },\n \"sidecars\": {\n \"description\": \"Configuration for pgBackRest sidecar containers\",\n \"properties\": {\n \"pgbackrest\": {\n \"description\": \"Defines the configuration for the pgBackRest sidecar container\",\n \"properties\": {\n \"resources\": {\n \"description\": \"Resource requirements for a sidecar container\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"pgbackrestConfig\": {\n \"description\": \"Defines the configuration for the pgBackRest config sidecar container\",\n \"properties\": {\n \"resources\": {\n \"description\": \"Resource requirements for a sidecar container\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"repos\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"pgbackrest\"\n ],\n \"type\": \"object\"\n },\n \"config\": {\n \"properties\": {\n \"files\": {\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"customReplicationTLSSecret\": {\n \"description\": \"The secret containing the replication client certificates and keys for\\nsecure connections to the PostgreSQL server. It will need to contain the\\nclient TLS certificate, TLS key and the Certificate Authority certificate\\nwith the data keys set to tls.crt, tls.key and ca.crt, respectively.\\nNOTE: If CustomReplicationClientTLSSecret is provided, CustomTLSSecret\\nMUST be provided and the ca.crt provided must be the same.\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"customTLSSecret\": {\n \"description\": \"The secret containing the Certificates and Keys to encrypt PostgreSQL\\ntraffic will need to contain the server TLS certificate, TLS key and the\\nCertificate Authority certificate with the data keys set to tls.crt,\\ntls.key and ca.crt, respectively. It will then be mounted as a volume\\nprojection to the '/pgconf/tls' directory. For more information on\\nKubernetes secret projections, please see\\nhttps://k8s.io/docs/concepts/configuration/secret/#projection-of-secret-keys-to-specific-paths\\nNOTE: If CustomTLSSecret is provided, CustomReplicationClientTLSSecret\\nMUST be provided and the ca.crt provided must be the same.\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"Specifies a data source for bootstrapping the PostgreSQL cluster.\",\n \"properties\": {\n \"pgbackrest\": {\n \"description\": \"Defines a pgBackRest cloud-based data source that can be used to pre-populate the\\nPostgreSQL data directory for a new PostgreSQL cluster using a pgBackRest restore.\\nThe PGBackRest field is incompatible with the PostgresCluster field: only one\\ndata source can be used for pre-populating a new PostgreSQL cluster\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Scheduling constraints of the pgBackRest restore Job.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"configuration\": {\n \"description\": \"Projected volumes containing custom pgBackRest configuration. These files are mounted\\nunder \\\"/etc/pgbackrest/conf.d\\\" alongside any pgBackRest configuration generated by the\\nPostgreSQL Operator:\\nhttps://pgbackrest.org/configuration.html\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"global\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Global pgBackRest configuration settings. These settings are included in the \\\"global\\\"\\nsection of the pgBackRest configuration generated by the PostgreSQL Operator, and then\\nmounted under \\\"/etc/pgbackrest/conf.d\\\":\\nhttps://pgbackrest.org/configuration.html\",\n \"type\": \"object\"\n },\n \"options\": {\n \"description\": \"Command line options to include when running the pgBackRest restore command.\\nhttps://pgbackrest.org/command.html#command-restore\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class name for the pgBackRest restore Job pod. Changing this\\nvalue causes PostgreSQL to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/\",\n \"type\": \"string\"\n },\n \"repo\": {\n \"description\": \"Defines a pgBackRest repository\",\n \"properties\": {\n \"azure\": {\n \"description\": \"Represents a pgBackRest repository that is created using Azure storage\",\n \"properties\": {\n \"container\": {\n \"description\": \"The Azure container utilized for the repository\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"container\"\n ],\n \"type\": \"object\"\n },\n \"gcs\": {\n \"description\": \"Represents a pgBackRest repository that is created using Google Cloud Storage\",\n \"properties\": {\n \"bucket\": {\n \"description\": \"The GCS bucket utilized for the repository\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"bucket\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The name of the repository\",\n \"pattern\": \"^repo[1-4]\",\n \"type\": \"string\"\n },\n \"s3\": {\n \"description\": \"RepoS3 represents a pgBackRest repository that is created using AWS S3 (or S3-compatible)\\nstorage\",\n \"properties\": {\n \"bucket\": {\n \"description\": \"The S3 bucket utilized for the repository\",\n \"type\": \"string\"\n },\n \"endpoint\": {\n \"description\": \"A valid endpoint corresponding to the specified region\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"The region corresponding to the S3 bucket\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"bucket\",\n \"endpoint\",\n \"region\"\n ],\n \"type\": \"object\"\n },\n \"schedules\": {\n \"description\": \"Defines the schedules for the pgBackRest backups\\nFull, Differential and Incremental backup types are supported:\\nhttps://pgbackrest.org/user-guide.html#concept/backup\",\n \"properties\": {\n \"differential\": {\n \"description\": \"Defines the Cron schedule for a differential pgBackRest backup.\\nFollows the standard Cron schedule syntax:\\nhttps://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax\",\n \"minLength\": 6,\n \"type\": \"string\"\n },\n \"full\": {\n \"description\": \"Defines the Cron schedule for a full pgBackRest backup.\\nFollows the standard Cron schedule syntax:\\nhttps://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax\",\n \"minLength\": 6,\n \"type\": \"string\"\n },\n \"incremental\": {\n \"description\": \"Defines the Cron schedule for an incremental pgBackRest backup.\\nFollows the standard Cron schedule syntax:\\nhttps://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax\",\n \"minLength\": 6,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volume\": {\n \"description\": \"Represents a pgBackRest repository that is created using a PersistentVolumeClaim\",\n \"properties\": {\n \"volumeClaimSpec\": {\n \"description\": \"Defines a PersistentVolumeClaim spec used to create and/or bind a volume\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"volumeClaimSpec\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Resource requirements for the pgBackRest restore Job.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"stanza\": {\n \"default\": \"db\",\n \"description\": \"The name of an existing pgBackRest stanza to use as the data source for the new PostgresCluster.\\nDefaults to `db` if not provided.\",\n \"type\": \"string\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of the pgBackRest restore Job.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"repo\",\n \"stanza\"\n ],\n \"type\": \"object\"\n },\n \"postgresCluster\": {\n \"description\": \"Defines a pgBackRest data source that can be used to pre-populate the PostgreSQL data\\ndirectory for a new PostgreSQL cluster using a pgBackRest restore.\\nThe PGBackRest field is incompatible with the PostgresCluster field: only one\\ndata source can be used for pre-populating a new PostgreSQL cluster\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Scheduling constraints of the pgBackRest restore Job.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"clusterName\": {\n \"description\": \"The name of an existing PostgresCluster to use as the data source for the new PostgresCluster.\\nDefaults to the name of the PostgresCluster being created if not provided.\",\n \"type\": \"string\"\n },\n \"clusterNamespace\": {\n \"description\": \"The namespace of the cluster specified as the data source using the clusterName field.\\nDefaults to the namespace of the PostgresCluster being created if not provided.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"description\": \"Command line options to include when running the pgBackRest restore command.\\nhttps://pgbackrest.org/command.html#command-restore\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class name for the pgBackRest restore Job pod. Changing this\\nvalue causes PostgreSQL to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/\",\n \"type\": \"string\"\n },\n \"repoName\": {\n \"description\": \"The name of the pgBackRest repo within the source PostgresCluster that contains the backups\\nthat should be utilized to perform a pgBackRest restore when initializing the data source\\nfor the new PostgresCluster.\",\n \"pattern\": \"^repo[1-4]\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resource requirements for the pgBackRest restore Job.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of the pgBackRest restore Job.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"repoName\"\n ],\n \"type\": \"object\"\n },\n \"volumes\": {\n \"description\": \"Defines any existing volumes to reuse for this PostgresCluster.\",\n \"properties\": {\n \"pgBackRestVolume\": {\n \"description\": \"Defines the existing pgBackRest repo volume and directory to use in the\\ncurrent PostgresCluster.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations of the move dir Job.\",\n \"type\": \"object\"\n },\n \"directory\": {\n \"description\": \"The existing directory. When not set, a move Job is not created for the\\nassociated volume.\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels of the move dir Job.\",\n \"type\": \"object\"\n },\n \"pvcName\": {\n \"description\": \"The existing PVC name.\",\n \"type\": \"string\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of the move dir Job.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"pvcName\"\n ],\n \"type\": \"object\"\n },\n \"pgDataVolume\": {\n \"description\": \"Defines the existing pgData volume and directory to use in the current\\nPostgresCluster.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations of the move dir Job.\",\n \"type\": \"object\"\n },\n \"directory\": {\n \"description\": \"The existing directory. When not set, a move Job is not created for the\\nassociated volume.\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels of the move dir Job.\",\n \"type\": \"object\"\n },\n \"pvcName\": {\n \"description\": \"The existing PVC name.\",\n \"type\": \"string\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of the move dir Job.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"pvcName\"\n ],\n \"type\": \"object\"\n },\n \"pgWALVolume\": {\n \"description\": \"Defines the existing pg_wal volume and directory to use in the current\\nPostgresCluster. Note that a defined pg_wal volume MUST be accompanied by\\na pgData volume.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations of the move dir Job.\",\n \"type\": \"object\"\n },\n \"directory\": {\n \"description\": \"The existing directory. When not set, a move Job is not created for the\\nassociated volume.\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels of the move dir Job.\",\n \"type\": \"object\"\n },\n \"pvcName\": {\n \"description\": \"The existing PVC name.\",\n \"type\": \"string\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of the move dir Job.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"pvcName\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"databaseInitSQL\": {\n \"description\": \"DatabaseInitSQL defines a ConfigMap containing custom SQL that will\\nbe run after the cluster is initialized. This ConfigMap must be in the same\\nnamespace as the cluster.\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key is the ConfigMap data key that points to a SQL string\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of a ConfigMap\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"disableDefaultPodScheduling\": {\n \"description\": \"Whether or not the PostgreSQL cluster should use the defined default\\nscheduling constraints. If the field is unset or false, the default\\nscheduling constraints will be used in addition to any custom constraints\\nprovided.\",\n \"type\": \"boolean\"\n },\n \"extensions\": {\n \"properties\": {\n \"pgAudit\": {\n \"type\": \"boolean\"\n },\n \"pgStatMonitor\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"image\": {\n \"description\": \"The image name to use for PostgreSQL containers. When omitted, the value\\ncomes from an operator environment variable. For standard PostgreSQL images,\\nthe format is RELATED_IMAGE_POSTGRES_{postgresVersion},\\ne.g. RELATED_IMAGE_POSTGRES_13. For PostGIS enabled PostgreSQL images,\\nthe format is RELATED_IMAGE_POSTGRES_{postgresVersion}_GIS_{postGISVersion},\\ne.g. RELATED_IMAGE_POSTGRES_13_GIS_3.1.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"ImagePullPolicy is used to determine when Kubernetes will attempt to\\npull (download) container images.\\nMore info: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\",\n \"enum\": [\n \"Always\",\n \"Never\",\n \"IfNotPresent\"\n ],\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"The image pull secrets used to pull from a private registry\\nChanging this value causes all running pods to restart.\\nhttps://k8s.io/docs/tasks/configure-pod-container/pull-image-private-registry/\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"instances\": {\n \"description\": \"Specifies one or more sets of PostgreSQL pods that replicate data for\\nthis cluster.\",\n \"items\": {\n \"properties\": {\n \"affinity\": {\n \"description\": \"Scheduling constraints of a PostgreSQL pod. Changing this value causes\\nPostgreSQL to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"containers\": {\n \"description\": \"Custom sidecars for PostgreSQL instance pods. Changing this value causes\\nPostgreSQL to restart.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied. Valid options are: 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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"dataVolumeClaimSpec\": {\n \"description\": \"Defines a PersistentVolumeClaim for PostgreSQL data.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"minItems\": 1,\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"required\": [\n \"storage\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"requests\"\n ],\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"accessModes\",\n \"resources\"\n ],\n \"type\": \"object\"\n },\n \"initContainers\": {\n \"description\": \"Additional init containers for PostgreSQL instance pods. Changing this value causes\\nPostgreSQL to restart.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"metadata\": {\n \"description\": \"Metadata contains metadata for custom resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"minAvailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Minimum number of pods that should be available at a time.\\nDefaults to one when the replicas field is greater than one.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name that associates this set of PostgreSQL pods. This field is optional\\nwhen only one instance set is defined. Each instance set in a cluster\\nmust have a unique name. The combined length of this and the cluster name\\nmust be 46 characters or less.\",\n \"pattern\": \"^([a-z0-9]([-a-z0-9]*[a-z0-9])?)?$\",\n \"type\": \"string\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class name for the PostgreSQL pod. Changing this value causes\\nPostgreSQL to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/\",\n \"type\": \"string\"\n },\n \"replicas\": {\n \"default\": 1,\n \"description\": \"Number of desired PostgreSQL pods.\",\n \"format\": \"int32\",\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"resources\": {\n \"description\": \"Compute resources of a PostgreSQL container.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security settings for a PostgreSQL pod.\",\n \"properties\": {\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"sidecars\": {\n \"description\": \"Configuration for instance sidecar containers\",\n \"properties\": {\n \"replicaCertCopy\": {\n \"description\": \"Defines the configuration for the replica cert copy sidecar container\",\n \"properties\": {\n \"resources\": {\n \"description\": \"Resource requirements for a sidecar container\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tablespaceVolumes\": {\n \"description\": \"The list of tablespaces volumes to mount for this postgrescluster\\nThis field requires enabling TablespaceVolumes feature gate\",\n \"items\": {\n \"properties\": {\n \"dataVolumeClaimSpec\": {\n \"description\": \"Defines a PersistentVolumeClaim for a tablespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The name for the tablespace, used as the path name for the volume.\\nMust be unique in the instance set since they become the directory names.\",\n \"minLength\": 1,\n \"pattern\": \"^[a-z][a-z0-9]*$\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"dataVolumeClaimSpec\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of a PostgreSQL pod. Changing this value causes PostgreSQL to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"Topology spread constraints of a PostgreSQL pod. Changing this value causes\\nPostgreSQL to restart.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods.\\nPods that match this label selector are counted to determine the number of pods\\nin their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nMatchLabelKeys cannot be set when LabelSelector isn't set.\\nKeys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P |\\n- if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P P |\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\\nwhen calculating pod topology spread skew. Options are:\\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating\\npod topology spread skew. Options are:\\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\\nhas a toleration, are included.\\n- Ignore: node taints are ignored. All nodes are included.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\\nthe spread constraint.\\n- DoNotSchedule (default) tells the scheduler not to schedule it.\\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n but giving higher precedence to topologies that would help reduce the\\n skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod\\nif and only if every possible node assignment for that pod would violate\\n\\\"MaxSkew\\\" on some topology.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 3/1/1:\\n| zone1 | zone2 | zone3 |\\n| P P P | P | P |\\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\\nwon't make it *more* imbalanced.\\nIt's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"The list of volume mounts to mount to PostgreSQL instance pods. Chaning this value causes\\nPostgreSQL to restart.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"walVolumeClaimSpec\": {\n \"description\": \"Defines a separate PersistentVolumeClaim for PostgreSQL's write-ahead log.\\nMore info: https://www.postgresql.org/docs/current/wal.html\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"minItems\": 1,\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"required\": [\n \"storage\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"requests\"\n ],\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"accessModes\",\n \"resources\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"dataVolumeClaimSpec\"\n ],\n \"type\": \"object\"\n },\n \"minItems\": 1,\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"metadata\": {\n \"description\": \"Metadata contains metadata for custom resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"monitoring\": {\n \"description\": \"The specification of monitoring tools that connect to PostgreSQL\",\n \"properties\": {\n \"pgmonitor\": {\n \"description\": \"PGMonitorSpec defines the desired state of the pgMonitor tool suite\",\n \"properties\": {\n \"exporter\": {\n \"properties\": {\n \"configuration\": {\n \"description\": \"Projected volumes containing custom PostgreSQL Exporter configuration. Currently supports\\nthe customization of PostgreSQL Exporter queries. If a \\\"queries.yml\\\" file is detected in\\nany volume projected using this field, it will be loaded using the \\\"extend.query-path\\\" flag:\\nhttps://github.com/prometheus-community/postgres_exporter#flags\\nChanging the values of field causes PostgreSQL and the exporter to restart.\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"customTLSSecret\": {\n \"description\": \"Projected secret containing custom TLS certificates to encrypt output from the exporter\\nweb server\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"The image name to use for crunchy-postgres-exporter containers. The image may\\nalso be set using the RELATED_IMAGE_PGEXPORTER environment variable.\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Changing this value causes PostgreSQL and the exporter to restart.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"openshift\": {\n \"description\": \"Whether or not the PostgreSQL cluster is being deployed to an OpenShift\\nenvironment. If the field is unset, the operator will automatically\\ndetect the environment.\",\n \"type\": \"boolean\"\n },\n \"patroni\": {\n \"properties\": {\n \"dynamicConfiguration\": {\n \"description\": \"Patroni dynamic configuration settings. Changes to this value will be\\nautomatically reloaded without validation. Changes to certain PostgreSQL\\nparameters cause PostgreSQL to restart.\\nMore info: https://patroni.readthedocs.io/en/latest/SETTINGS.html\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"leaderLeaseDurationSeconds\": {\n \"default\": 30,\n \"description\": \"TTL of the cluster leader lock. \\\"Think of it as the\\nlength of time before initiation of the automatic failover process.\\\"\\nChanging this value causes PostgreSQL to restart.\",\n \"format\": \"int32\",\n \"minimum\": 3,\n \"type\": \"integer\"\n },\n \"port\": {\n \"default\": 8008,\n \"description\": \"The port on which Patroni should listen.\\nChanging this value causes PostgreSQL to restart.\",\n \"format\": \"int32\",\n \"minimum\": 1024,\n \"type\": \"integer\"\n },\n \"switchover\": {\n \"description\": \"Switchover gives options to perform ad hoc switchovers in a PostgresCluster.\",\n \"properties\": {\n \"enabled\": {\n \"description\": \"Whether or not the operator should allow switchovers in a PostgresCluster\",\n \"type\": \"boolean\"\n },\n \"targetInstance\": {\n \"description\": \"The instance that should become primary during a switchover. This field is\\noptional when Type is \\\"Switchover\\\" and required when Type is \\\"Failover\\\".\\nWhen it is not specified, a healthy replica is automatically selected.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"Switchover\",\n \"description\": \"Type of switchover to perform. Valid options are Switchover and Failover.\\n\\\"Switchover\\\" changes the primary instance of a healthy PostgresCluster.\\n\\\"Failover\\\" forces a particular instance to be primary, regardless of other\\nfactors. A TargetInstance must be specified to failover.\\nNOTE: The Failover type is reserved as the \\\"last resort\\\" case.\",\n \"enum\": [\n \"Switchover\",\n \"Failover\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"enabled\"\n ],\n \"type\": \"object\"\n },\n \"syncPeriodSeconds\": {\n \"default\": 10,\n \"description\": \"The interval for refreshing the leader lock and applying\\ndynamicConfiguration. Must be less than leaderLeaseDurationSeconds.\\nChanging this value causes PostgreSQL to restart.\",\n \"format\": \"int32\",\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"paused\": {\n \"description\": \"Suspends the rollout and reconciliation of changes made to the\\nPostgresCluster spec.\",\n \"type\": \"boolean\"\n },\n \"port\": {\n \"default\": 5432,\n \"description\": \"The port on which PostgreSQL should listen.\",\n \"format\": \"int32\",\n \"minimum\": 1024,\n \"type\": \"integer\"\n },\n \"postGISVersion\": {\n \"description\": \"The PostGIS extension version installed in the PostgreSQL image.\\nWhen image is not set, indicates a PostGIS enabled image will be used.\",\n \"type\": \"string\"\n },\n \"postgresVersion\": {\n \"description\": \"The major version of PostgreSQL installed in the PostgreSQL image\",\n \"maximum\": 16,\n \"minimum\": 12,\n \"type\": \"integer\"\n },\n \"proxy\": {\n \"description\": \"The specification of a proxy that connects to PostgreSQL.\",\n \"properties\": {\n \"pgBouncer\": {\n \"description\": \"Defines a PgBouncer proxy and connection pooler.\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Scheduling constraints of a PgBouncer pod. Changing this value causes\\nPgBouncer to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"config\": {\n \"description\": \"Configuration settings for the PgBouncer process. Changes to any of these\\nvalues will be automatically reloaded without validation. Be careful, as\\nyou may put PgBouncer into an unusable state.\\nMore info: https://www.pgbouncer.org/usage.html#reload\",\n \"properties\": {\n \"databases\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"PgBouncer database definitions. The key is the database requested by a\\nclient while the value is a libpq-styled connection string. The special\\nkey \\\"*\\\" acts as a fallback. When this field is empty, PgBouncer is\\nconfigured with a single \\\"*\\\" entry that connects to the primary\\nPostgreSQL instance.\\nMore info: https://www.pgbouncer.org/config.html#section-databases\",\n \"type\": \"object\"\n },\n \"files\": {\n \"description\": \"Files to mount under \\\"/etc/pgbouncer\\\". When specified, settings in the\\n\\\"pgbouncer.ini\\\" file are loaded before all others. From there, other\\nfiles may be included by absolute path. Changing these references causes\\nPgBouncer to restart, but changes to the file contents are automatically\\nreloaded.\\nMore info: https://www.pgbouncer.org/config.html#include-directive\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"global\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Settings that apply to the entire PgBouncer process.\\nMore info: https://www.pgbouncer.org/config.html\",\n \"type\": \"object\"\n },\n \"users\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Connection settings specific to particular users.\\nMore info: https://www.pgbouncer.org/config.html#section-users\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"containers\": {\n \"description\": \"Custom sidecars for a PgBouncer pod. Changing this value causes\\nPgBouncer to restart.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied. Valid options are: 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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"customTLSSecret\": {\n \"description\": \"A secret projection containing a certificate and key with which to encrypt\\nconnections to PgBouncer. The \\\"tls.crt\\\", \\\"tls.key\\\", and \\\"ca.crt\\\" paths must\\nbe PEM-encoded certificates and keys. Changing this value causes PgBouncer\\nto restart.\\nMore info: https://kubernetes.io/docs/concepts/configuration/secret/#projection-of-secret-keys-to-specific-paths\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"exposeSuperusers\": {\n \"description\": \"Allow SUPERUSERs to connect through PGBouncer.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Name of a container image that can run PgBouncer 1.15 or newer. Changing\\nthis value causes PgBouncer to restart. The image may also be set using\\nthe RELATED_IMAGE_PGBOUNCER environment variable.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"Metadata contains metadata for custom resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"minAvailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Minimum number of pods that should be available at a time.\\nDefaults to one when the replicas field is greater than one.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"port\": {\n \"default\": 5432,\n \"description\": \"Port on which PgBouncer should listen for client connections. Changing\\nthis value causes PgBouncer to restart.\",\n \"format\": \"int32\",\n \"minimum\": 1024,\n \"type\": \"integer\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class name for the pgBouncer pod. Changing this value causes\\nPostgreSQL to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/\",\n \"type\": \"string\"\n },\n \"replicas\": {\n \"default\": 1,\n \"description\": \"Number of desired PgBouncer pods.\",\n \"format\": \"int32\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"resources\": {\n \"description\": \"Compute resources of a PgBouncer container. Changing this value causes\\nPgBouncer to restart.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security settings for PGBouncer pods.\",\n \"properties\": {\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"description\": \"Specification of the service that exposes PgBouncer.\",\n \"properties\": {\n \"loadBalancerSourceRanges\": {\n \"description\": \"LoadBalancerSourceRanges is a list of IP CIDRs allowed access to load.\\nThis field will be ignored if the cloud-provider does not support the feature.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"metadata\": {\n \"description\": \"Metadata contains metadata for custom resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nodePort\": {\n \"description\": \"The port on which this service is exposed when type is NodePort or\\nLoadBalancer. Value must be in-range and not in use or the operation will\\nfail. If unspecified, a port will be allocated if this Service requires one.\\n- https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"type\": {\n \"default\": \"ClusterIP\",\n \"description\": \"More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types\",\n \"enum\": [\n \"ClusterIP\",\n \"NodePort\",\n \"LoadBalancer\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sidecars\": {\n \"description\": \"Configuration for pgBouncer sidecar containers\",\n \"properties\": {\n \"pgbouncerConfig\": {\n \"description\": \"Defines the configuration for the pgBouncer config sidecar container\",\n \"properties\": {\n \"resources\": {\n \"description\": \"Resource requirements for a sidecar container\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of a PgBouncer pod. Changing this value causes PgBouncer to\\nrestart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"Topology spread constraints of a PgBouncer pod. Changing this value causes\\nPgBouncer to restart.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods.\\nPods that match this label selector are counted to determine the number of pods\\nin their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nMatchLabelKeys cannot be set when LabelSelector isn't set.\\nKeys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P |\\n- if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P P |\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\\nwhen calculating pod topology spread skew. Options are:\\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating\\npod topology spread skew. Options are:\\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\\nhas a toleration, are included.\\n- Ignore: node taints are ignored. All nodes are included.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\\nthe spread constraint.\\n- DoNotSchedule (default) tells the scheduler not to schedule it.\\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n but giving higher precedence to topologies that would help reduce the\\n skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod\\nif and only if every possible node assignment for that pod would violate\\n\\\"MaxSkew\\\" on some topology.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 3/1/1:\\n| zone1 | zone2 | zone3 |\\n| P P P | P | P |\\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\\nwon't make it *more* imbalanced.\\nIt's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"pgBouncer\"\n ],\n \"type\": \"object\"\n },\n \"replicaService\": {\n \"description\": \"Specification of the service that exposes PostgreSQL replica instances\",\n \"properties\": {\n \"loadBalancerSourceRanges\": {\n \"description\": \"LoadBalancerSourceRanges is a list of IP CIDRs allowed access to load.\\nThis field will be ignored if the cloud-provider does not support the feature.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"metadata\": {\n \"description\": \"Metadata contains metadata for custom resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nodePort\": {\n \"description\": \"The port on which this service is exposed when type is NodePort or\\nLoadBalancer. Value must be in-range and not in use or the operation will\\nfail. If unspecified, a port will be allocated if this Service requires one.\\n- https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"type\": {\n \"default\": \"ClusterIP\",\n \"description\": \"More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types\",\n \"enum\": [\n \"ClusterIP\",\n \"NodePort\",\n \"LoadBalancer\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"description\": \"Specification of the service that exposes the PostgreSQL primary instance.\",\n \"properties\": {\n \"loadBalancerSourceRanges\": {\n \"description\": \"LoadBalancerSourceRanges is a list of IP CIDRs allowed access to load.\\nThis field will be ignored if the cloud-provider does not support the feature.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"metadata\": {\n \"description\": \"Metadata contains metadata for custom resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nodePort\": {\n \"description\": \"The port on which this service is exposed when type is NodePort or\\nLoadBalancer. Value must be in-range and not in use or the operation will\\nfail. If unspecified, a port will be allocated if this Service requires one.\\n- https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"type\": {\n \"default\": \"ClusterIP\",\n \"description\": \"More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types\",\n \"enum\": [\n \"ClusterIP\",\n \"NodePort\",\n \"LoadBalancer\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"shutdown\": {\n \"description\": \"Whether or not the PostgreSQL cluster should be stopped.\\nWhen this is true, workloads are scaled to zero and CronJobs\\nare suspended.\\nOther resources, such as Services and Volumes, remain in place.\",\n \"type\": \"boolean\"\n },\n \"standby\": {\n \"description\": \"Run this cluster as a read-only copy of an existing cluster or archive.\",\n \"properties\": {\n \"enabled\": {\n \"default\": true,\n \"description\": \"Whether or not the PostgreSQL cluster should be read-only. When this is\\ntrue, WAL files are applied from a pgBackRest repository or another\\nPostgreSQL server.\",\n \"type\": \"boolean\"\n },\n \"host\": {\n \"description\": \"Network address of the PostgreSQL server to follow via streaming replication.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Network port of the PostgreSQL server to follow via streaming replication.\",\n \"format\": \"int32\",\n \"minimum\": 1024,\n \"type\": \"integer\"\n },\n \"repoName\": {\n \"description\": \"The name of the pgBackRest repository to follow for WAL files.\",\n \"pattern\": \"^repo[1-4]\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of group IDs applied to the process of a container. These can be\\nuseful when accessing shared file systems with constrained permissions.\\nMore info: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context\",\n \"items\": {\n \"format\": \"int64\",\n \"maximum\": 2147483647,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"userInterface\": {\n \"description\": \"The specification of a user interface that connects to PostgreSQL.\",\n \"properties\": {\n \"pgAdmin\": {\n \"description\": \"Defines a pgAdmin user interface.\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Scheduling constraints of a pgAdmin pod. Changing this value causes\\npgAdmin to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"config\": {\n \"description\": \"Configuration settings for the pgAdmin process. Changes to any of these\\nvalues will be loaded without validation. Be careful, as\\nyou may put pgAdmin into an unusable state.\",\n \"properties\": {\n \"files\": {\n \"description\": \"Files allows the user to mount projected volumes into the pgAdmin\\ncontainer so that files can be referenced by pgAdmin as needed.\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"ldapBindPassword\": {\n \"description\": \"A Secret containing the value for the LDAP_BIND_PASSWORD setting.\\nMore info: https://www.pgadmin.org/docs/pgadmin4/latest/ldap.html\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"settings\": {\n \"description\": \"Settings for the pgAdmin server process. Keys should be uppercase and\\nvalues must be constants.\\nMore info: https://www.pgadmin.org/docs/pgadmin4/latest/config_py.html\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"dataVolumeClaimSpec\": {\n \"description\": \"Defines a PersistentVolumeClaim for pgAdmin data.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"image\": {\n \"description\": \"Name of a container image that can run pgAdmin 4. Changing this value causes\\npgAdmin to restart. The image may also be set using the RELATED_IMAGE_PGADMIN\\nenvironment variable.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"Metadata contains metadata for custom resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class name for the pgAdmin pod. Changing this value causes pgAdmin\\nto restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/\",\n \"type\": \"string\"\n },\n \"replicas\": {\n \"default\": 1,\n \"description\": \"Number of desired pgAdmin pods.\",\n \"format\": \"int32\",\n \"maximum\": 1,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"resources\": {\n \"description\": \"Compute resources of a pgAdmin container. Changing this value causes\\npgAdmin to restart.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"service\": {\n \"description\": \"Specification of the service that exposes pgAdmin.\",\n \"properties\": {\n \"loadBalancerSourceRanges\": {\n \"description\": \"LoadBalancerSourceRanges is a list of IP CIDRs allowed access to load.\\nThis field will be ignored if the cloud-provider does not support the feature.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"metadata\": {\n \"description\": \"Metadata contains metadata for custom resources\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nodePort\": {\n \"description\": \"The port on which this service is exposed when type is NodePort or\\nLoadBalancer. Value must be in-range and not in use or the operation will\\nfail. If unspecified, a port will be allocated if this Service requires one.\\n- https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"type\": {\n \"default\": \"ClusterIP\",\n \"description\": \"More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types\",\n \"enum\": [\n \"ClusterIP\",\n \"NodePort\",\n \"LoadBalancer\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations of a pgAdmin pod. Changing this value causes pgAdmin to restart.\\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"Topology spread constraints of a pgAdmin pod. Changing this value causes\\npgAdmin to restart.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods.\\nPods that match this label selector are counted to determine the number of pods\\nin their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nMatchLabelKeys cannot be set when LabelSelector isn't set.\\nKeys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P |\\n- if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P P |\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\\nwhen calculating pod topology spread skew. Options are:\\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating\\npod topology spread skew. Options are:\\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\\nhas a toleration, are included.\\n- Ignore: node taints are ignored. All nodes are included.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\\nthe spread constraint.\\n- DoNotSchedule (default) tells the scheduler not to schedule it.\\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n but giving higher precedence to topologies that would help reduce the\\n skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod\\nif and only if every possible node assignment for that pod would violate\\n\\\"MaxSkew\\\" on some topology.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 3/1/1:\\n| zone1 | zone2 | zone3 |\\n| P P P | P | P |\\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\\nwon't make it *more* imbalanced.\\nIt's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"dataVolumeClaimSpec\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"pgAdmin\"\n ],\n \"type\": \"object\"\n },\n \"users\": {\n \"description\": \"Users to create inside PostgreSQL and the databases they should access.\\nThe default creates one user that can access one database matching the\\nPostgresCluster name. An empty list creates no users. Removing a user\\nfrom this list does NOT drop the user nor revoke their access.\",\n \"items\": {\n \"properties\": {\n \"databases\": {\n \"description\": \"Databases to which this user can connect and create objects. Removing a\\ndatabase from this list does NOT revoke access. This field is ignored for\\nthe \\\"postgres\\\" user.\",\n \"items\": {\n \"description\": \"PostgreSQL identifiers are limited in length but may contain any character.\\nMore info: https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS\",\n \"maxLength\": 63,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"set\"\n },\n \"name\": {\n \"description\": \"The name of this PostgreSQL user. The value may contain only lowercase\\nletters, numbers, and hyphen so that it fits into Kubernetes metadata.\",\n \"maxLength\": 63,\n \"minLength\": 1,\n \"pattern\": \"^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\",\n \"type\": \"string\"\n },\n \"options\": {\n \"description\": \"ALTER ROLE options except for PASSWORD. This field is ignored for the\\n\\\"postgres\\\" user.\\nMore info: https://www.postgresql.org/docs/current/role-attributes.html\",\n \"pattern\": \"^[^;]*$\",\n \"type\": \"string\"\n },\n \"password\": {\n \"description\": \"Properties of the password generated for this user.\",\n \"properties\": {\n \"type\": {\n \"default\": \"ASCII\",\n \"description\": \"Type of password to generate. Defaults to ASCII. Valid options are ASCII\\nand AlphaNumeric.\\n\\\"ASCII\\\" passwords contain letters, numbers, and symbols from the US-ASCII character set.\\n\\\"AlphaNumeric\\\" passwords contain letters and numbers from the US-ASCII character set.\",\n \"enum\": [\n \"ASCII\",\n \"AlphaNumeric\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"secretName\": {\n \"description\": \"The secret name to generate user, password, connection info this PostgreSQL user.\",\n \"maxLength\": 63,\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n }\n },\n \"required\": [\n \"backups\",\n \"instances\",\n \"postgresVersion\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Postgres Cluster\",\n \"type\": \"object\"\n}", + "version": "postgres-operator.crunchydata.com/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "Postgres Cluster", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/percona/percona-helm-charts/releases/download/pg-operator-2.4.2/pg-operator-2.4.2.tgz" + }, + "model": { + "category": { + "name": "Database" + }, + "displayName": "Percona Postgres Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#336791", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/percona/percona-helm-charts/releases/download/pg-operator-2.4.2/pg-operator-2.4.2.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 432.071 445.383\" xml:space=\"preserve\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"orginal\" style=\"fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;\"\u003e\n\u0026#x9;\u003c/g\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_x0020_3\" style=\"fill-rule:nonzero;clip-rule:nonzero;fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#000000;stroke:#000000;stroke-width:37.3953;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M323.205,324.227c2.833-23.601,1.984-27.062,19.563-23.239l4.463,0.392c13.517,0.615,31.199-2.174,41.587-7c22.362-10.376,35.622-27.7,13.572-23.148c-50.297,10.376-53.755-6.655-53.755-6.655c53.111-78.803,75.313-178.836,56.149-203.322 C352.514-5.534,262.036,26.049,260.522,26.869l-0.482,0.089c-9.938-2.062-21.06-3.294-33.554-3.496c-22.761-0.374-40.032,5.967-53.133,15.904c0,0-161.408-66.498-153.899,83.628c1.597,31.936,45.777,241.655,98.47,178.31 c19.259-23.163,37.871-42.748,37.871-42.748c9.242,6.14,20.307,9.272,31.912,8.147l0.897-0.765c-0.281,2.876-0.157,5.689,0.359,9.019c-13.572,15.167-9.584,17.83-36.723,23.416c-27.457,5.659-11.326,15.734-0.797,18.367c12.768,3.193,42.305,7.716,62.268-20.224 l-0.795,3.188c5.325,4.26,4.965,30.619,5.72,49.452c0.756,18.834,2.017,36.409,5.856,46.771c3.839,10.36,8.369,37.05,44.036,29.406c29.809-6.388,52.6-15.582,54.677-101.107\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#336791;stroke:none;\" d=\"M402.395,271.23c-50.302,10.376-53.76-6.655-53.76-6.655c53.111-78.808,75.313-178.843,56.153-203.326c-52.27-66.785-142.752-35.2-144.262-34.38l-0.486,0.087c-9.938-2.063-21.06-3.292-33.56-3.496c-22.761-0.373-40.026,5.967-53.127,15.902 c0,0-161.411-66.495-153.904,83.63c1.597,31.938,45.776,241.657,98.471,178.312c19.26-23.163,37.869-42.748,37.869-42.748c9.243,6.14,20.308,9.272,31.908,8.147l0.901-0.765c-0.28,2.876-0.152,5.689,0.361,9.019c-13.575,15.167-9.586,17.83-36.723,23.416 c-27.459,5.659-11.328,15.734-0.796,18.367c12.768,3.193,42.307,7.716,62.266-20.224l-0.796,3.188c5.319,4.26,9.054,27.711,8.428,48.969c-0.626,21.259-1.044,35.854,3.147,47.254c4.191,11.4,8.368,37.05,44.042,29.406c29.809-6.388,45.256-22.942,47.405-50.555 c1.525-19.631,4.976-16.729,5.194-34.28l2.768-8.309c3.192-26.611,0.507-35.196,18.872-31.203l4.463,0.392c13.517,0.615,31.208-2.174,41.591-7c22.358-10.376,35.618-27.7,13.573-23.148z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M215.866,286.484c-1.385,49.516,0.348,99.377,5.193,111.495c4.848,12.118,15.223,35.688,50.9,28.045c29.806-6.39,40.651-18.756,45.357-46.051c3.466-20.082,10.148-75.854,11.005-87.281\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M173.104,38.256c0,0-161.521-66.016-154.012,84.109c1.597,31.938,45.779,241.664,98.473,178.316c19.256-23.166,36.671-41.335,36.671-41.335\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M260.349,26.207c-5.591,1.753,89.848-34.889,144.087,34.417c19.159,24.484-3.043,124.519-56.153,203.329\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke-linejoin:bevel;\" d=\"M348.282,263.953c0,0,3.461,17.036,53.764,6.653c22.04-4.552,8.776,12.774-13.577,23.155c-18.345,8.514-59.474,10.696-60.146-1.069c-1.729-30.355,21.647-21.133,19.96-28.739c-1.525-6.85-11.979-13.573-18.894-30.338 c-6.037-14.633-82.796-126.849,21.287-110.183c3.813-0.789-27.146-99.002-124.553-100.599c-97.385-1.597-94.19,119.762-94.19,119.762\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M188.604,274.334c-13.577,15.166-9.584,17.829-36.723,23.417c-27.459,5.66-11.326,15.733-0.797,18.365c12.768,3.195,42.307,7.718,62.266-20.229c6.078-8.509-0.036-22.086-8.385-25.547c-4.034-1.671-9.428-3.765-16.361,3.994z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M187.715,274.069c-1.368-8.917,2.93-19.528,7.536-31.942c6.922-18.626,22.893-37.255,10.117-96.339c-9.523-44.029-73.396-9.163-73.436-3.193c-0.039,5.968,2.889,30.26-1.067,58.548c-5.162,36.913,23.488,68.132,56.479,64.938\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#FFFFFF;stroke-width:4.155;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M172.517,141.7c-0.288,2.039,3.733,7.48,8.976,8.207c5.234,0.73,9.714-3.522,9.998-5.559c0.284-2.039-3.732-4.285-8.977-5.015c-5.237-0.731-9.719,0.333-9.996,2.367z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#FFFFFF;stroke-width:2.0775;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M331.941,137.543c0.284,2.039-3.732,7.48-8.976,8.207c-5.238,0.73-9.718-3.522-10.005-5.559c-0.277-2.039,3.74-4.285,8.979-5.015c5.239-0.73,9.718,0.333,10.002,2.368z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M350.676,123.432c0.863,15.994-3.445,26.888-3.988,43.914c-0.804,24.748,11.799,53.074-7.191,81.435\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke-width:3;\" d=\"M0,60.232\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 432.1 445.4\" style=\"enable-background:new 0 0 432.1 445.4;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n .st0{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;}\n .st1{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:bevel;}\n .st2{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:4.155;}\n .st3{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:2.0775;}\n .st4{fill:none;stroke:#FFFFFF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;}\n\u003c/style\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"orginal\"\u003e\n\u003c/g\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_x0020_3\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M215.9,286.5c-1.4,49.5,0.3,99.4,5.2,111.5c4.8,12.1,15.2,35.7,50.9,28c29.8-6.4,40.7-18.8,45.4-46.1\u0026#xA; c3.5-20.1,10.1-75.9,11-87.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M173.1,38.3c0,0-161.5-66-154,84.1c1.6,31.9,45.8,241.7,98.5,178.3c19.3-23.2,36.7-41.3,36.7-41.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M260.3,26.2c-5.6,1.8,89.8-34.9,144.1,34.4c19.2,24.5-3,124.5-56.2,203.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st1\" d=\"M348.3,264c0,0,3.5,17,53.8,6.7c22-4.6,8.8,12.8-13.6,23.2c-18.3,8.5-59.5,10.7-60.1-1.1\u0026#xA; C326.6,262.3,350,271.6,348.3,264c-1.5-6.9-12-13.6-18.9-30.3c-6-14.6-82.8-126.8,21.3-110.2c3.8-0.8-27.1-99-124.6-100.6\u0026#xA; c-97.4-1.6-94.2,119.8-94.2,119.8\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M188.6,274.3c-13.6,15.2-9.6,17.8-36.7,23.4c-27.5,5.7-11.3,15.7-0.8,18.4c12.8,3.2,42.3,7.7,62.3-20.2\u0026#xA; c6.1-8.5,0-22.1-8.4-25.5C200.9,268.7,195.5,266.6,188.6,274.3L188.6,274.3z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M187.7,274.1c-1.4-8.9,2.9-19.5,7.5-31.9c6.9-18.6,22.9-37.3,10.1-96.3c-9.5-44-73.4-9.2-73.4-3.2\u0026#xA; c0,6,2.9,30.3-1.1,58.5c-5.2,36.9,23.5,68.1,56.5,64.9\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st2\" d=\"M172.5,141.7c-0.3,2,3.7,7.5,9,8.2c5.2,0.7,9.7-3.5,10-5.6c0.3-2-3.7-4.3-9-5\u0026#xA; C177.3,138.6,172.8,139.7,172.5,141.7L172.5,141.7z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st3\" d=\"M331.9,137.5c0.3,2-3.7,7.5-9,8.2c-5.2,0.7-9.7-3.5-10-5.6c-0.3-2,3.7-4.3,9-5S331.7,135.5,331.9,137.5\u0026#xA; L331.9,137.5z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M350.7,123.4c0.9,16-3.4,26.9-4,43.9c-0.8,24.7,11.8,53.1-7.2,81.4\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st4\" d=\"M0,60.2\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003c/svg\u003e" + }, + "model": { + "version": "2.4.2" + }, + "name": "pg-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "App Definition and Development", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#336791", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"432.071pt\" height=\"445.383pt\" viewBox=\"0 0 432.071 445.383\" xml:space=\"preserve\"\u003e\n\u003cg id=\"orginal\" style=\"fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;\"\u003e\n\t\u003c/g\u003e\n\u003cg id=\"Layer_x0020_3\" style=\"fill-rule:nonzero;clip-rule:nonzero;fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;\"\u003e\n\u003cpath style=\"fill:#000000;stroke:#000000;stroke-width:37.3953;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M323.205,324.227c2.833-23.601,1.984-27.062,19.563-23.239l4.463,0.392c13.517,0.615,31.199-2.174,41.587-7c22.362-10.376,35.622-27.7,13.572-23.148c-50.297,10.376-53.755-6.655-53.755-6.655c53.111-78.803,75.313-178.836,56.149-203.322 C352.514-5.534,262.036,26.049,260.522,26.869l-0.482,0.089c-9.938-2.062-21.06-3.294-33.554-3.496c-22.761-0.374-40.032,5.967-53.133,15.904c0,0-161.408-66.498-153.899,83.628c1.597,31.936,45.777,241.655,98.47,178.31 c19.259-23.163,37.871-42.748,37.871-42.748c9.242,6.14,20.307,9.272,31.912,8.147l0.897-0.765c-0.281,2.876-0.157,5.689,0.359,9.019c-13.572,15.167-9.584,17.83-36.723,23.416c-27.457,5.659-11.326,15.734-0.797,18.367c12.768,3.193,42.305,7.716,62.268-20.224 l-0.795,3.188c5.325,4.26,4.965,30.619,5.72,49.452c0.756,18.834,2.017,36.409,5.856,46.771c3.839,10.36,8.369,37.05,44.036,29.406c29.809-6.388,52.6-15.582,54.677-101.107\"/\u003e\n\u003cpath style=\"fill:#336791;stroke:none;\" d=\"M402.395,271.23c-50.302,10.376-53.76-6.655-53.76-6.655c53.111-78.808,75.313-178.843,56.153-203.326c-52.27-66.785-142.752-35.2-144.262-34.38l-0.486,0.087c-9.938-2.063-21.06-3.292-33.56-3.496c-22.761-0.373-40.026,5.967-53.127,15.902 c0,0-161.411-66.495-153.904,83.63c1.597,31.938,45.776,241.657,98.471,178.312c19.26-23.163,37.869-42.748,37.869-42.748c9.243,6.14,20.308,9.272,31.908,8.147l0.901-0.765c-0.28,2.876-0.152,5.689,0.361,9.019c-13.575,15.167-9.586,17.83-36.723,23.416 c-27.459,5.659-11.328,15.734-0.796,18.367c12.768,3.193,42.307,7.716,62.266-20.224l-0.796,3.188c5.319,4.26,9.054,27.711,8.428,48.969c-0.626,21.259-1.044,35.854,3.147,47.254c4.191,11.4,8.368,37.05,44.042,29.406c29.809-6.388,45.256-22.942,47.405-50.555 c1.525-19.631,4.976-16.729,5.194-34.28l2.768-8.309c3.192-26.611,0.507-35.196,18.872-31.203l4.463,0.392c13.517,0.615,31.208-2.174,41.591-7c22.358-10.376,35.618-27.7,13.573-23.148z\"/\u003e\n\u003cpath d=\"M215.866,286.484c-1.385,49.516,0.348,99.377,5.193,111.495c4.848,12.118,15.223,35.688,50.9,28.045c29.806-6.39,40.651-18.756,45.357-46.051c3.466-20.082,10.148-75.854,11.005-87.281\"/\u003e\n\u003cpath d=\"M173.104,38.256c0,0-161.521-66.016-154.012,84.109c1.597,31.938,45.779,241.664,98.473,178.316c19.256-23.166,36.671-41.335,36.671-41.335\"/\u003e\n\u003cpath d=\"M260.349,26.207c-5.591,1.753,89.848-34.889,144.087,34.417c19.159,24.484-3.043,124.519-56.153,203.329\"/\u003e\n\u003cpath style=\"stroke-linejoin:bevel;\" d=\"M348.282,263.953c0,0,3.461,17.036,53.764,6.653c22.04-4.552,8.776,12.774-13.577,23.155c-18.345,8.514-59.474,10.696-60.146-1.069c-1.729-30.355,21.647-21.133,19.96-28.739c-1.525-6.85-11.979-13.573-18.894-30.338 c-6.037-14.633-82.796-126.849,21.287-110.183c3.813-0.789-27.146-99.002-124.553-100.599c-97.385-1.597-94.19,119.762-94.19,119.762\"/\u003e\n\u003cpath d=\"M188.604,274.334c-13.577,15.166-9.584,17.829-36.723,23.417c-27.459,5.66-11.326,15.733-0.797,18.365c12.768,3.195,42.307,7.718,62.266-20.229c6.078-8.509-0.036-22.086-8.385-25.547c-4.034-1.671-9.428-3.765-16.361,3.994z\"/\u003e\n\u003cpath d=\"M187.715,274.069c-1.368-8.917,2.93-19.528,7.536-31.942c6.922-18.626,22.893-37.255,10.117-96.339c-9.523-44.029-73.396-9.163-73.436-3.193c-0.039,5.968,2.889,30.26-1.067,58.548c-5.162,36.913,23.488,68.132,56.479,64.938\"/\u003e\n\u003cpath style=\"fill:#FFFFFF;stroke-width:4.155;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M172.517,141.7c-0.288,2.039,3.733,7.48,8.976,8.207c5.234,0.73,9.714-3.522,9.998-5.559c0.284-2.039-3.732-4.285-8.977-5.015c-5.237-0.731-9.719,0.333-9.996,2.367z\"/\u003e\n\u003cpath style=\"fill:#FFFFFF;stroke-width:2.0775;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M331.941,137.543c0.284,2.039-3.732,7.48-8.976,8.207c-5.238,0.73-9.718-3.522-10.005-5.559c-0.277-2.039,3.74-4.285,8.979-5.015c5.239-0.73,9.718,0.333,10.002,2.368z\"/\u003e\n\u003cpath d=\"M350.676,123.432c0.863,15.994-3.445,26.888-3.988,43.914c-0.804,24.748,11.799,53.074-7.191,81.435\"/\u003e\n\u003cpath style=\"stroke-width:3;\" d=\"M0,60.232\"/\u003e\n\u003c/g\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 432.1 445.4\" style=\"enable-background:new 0 0 432.1 445.4;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n .st0{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;}\n .st1{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:bevel;}\n .st2{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:4.155;}\n .st3{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:2.0775;}\n .st4{fill:none;stroke:#FFFFFF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;}\n\u003c/style\u003e\n\u003cg id=\"orginal\"\u003e\n\u003c/g\u003e\n\u003cg id=\"Layer_x0020_3\"\u003e\n \u003cpath class=\"st0\" d=\"M215.9,286.5c-1.4,49.5,0.3,99.4,5.2,111.5c4.8,12.1,15.2,35.7,50.9,28c29.8-6.4,40.7-18.8,45.4-46.1\n c3.5-20.1,10.1-75.9,11-87.3\"/\u003e\n \u003cpath class=\"st0\" d=\"M173.1,38.3c0,0-161.5-66-154,84.1c1.6,31.9,45.8,241.7,98.5,178.3c19.3-23.2,36.7-41.3,36.7-41.3\"/\u003e\n \u003cpath class=\"st0\" d=\"M260.3,26.2c-5.6,1.8,89.8-34.9,144.1,34.4c19.2,24.5-3,124.5-56.2,203.3\"/\u003e\n \u003cpath class=\"st1\" d=\"M348.3,264c0,0,3.5,17,53.8,6.7c22-4.6,8.8,12.8-13.6,23.2c-18.3,8.5-59.5,10.7-60.1-1.1\n C326.6,262.3,350,271.6,348.3,264c-1.5-6.9-12-13.6-18.9-30.3c-6-14.6-82.8-126.8,21.3-110.2c3.8-0.8-27.1-99-124.6-100.6\n c-97.4-1.6-94.2,119.8-94.2,119.8\"/\u003e\n \u003cpath class=\"st0\" d=\"M188.6,274.3c-13.6,15.2-9.6,17.8-36.7,23.4c-27.5,5.7-11.3,15.7-0.8,18.4c12.8,3.2,42.3,7.7,62.3-20.2\n c6.1-8.5,0-22.1-8.4-25.5C200.9,268.7,195.5,266.6,188.6,274.3L188.6,274.3z\"/\u003e\n \u003cpath class=\"st0\" d=\"M187.7,274.1c-1.4-8.9,2.9-19.5,7.5-31.9c6.9-18.6,22.9-37.3,10.1-96.3c-9.5-44-73.4-9.2-73.4-3.2\n c0,6,2.9,30.3-1.1,58.5c-5.2,36.9,23.5,68.1,56.5,64.9\"/\u003e\n \u003cpath class=\"st2\" d=\"M172.5,141.7c-0.3,2,3.7,7.5,9,8.2c5.2,0.7,9.7-3.5,10-5.6c0.3-2-3.7-4.3-9-5\n C177.3,138.6,172.8,139.7,172.5,141.7L172.5,141.7z\"/\u003e\n \u003cpath class=\"st3\" d=\"M331.9,137.5c0.3,2-3.7,7.5-9,8.2c-5.2,0.7-9.7-3.5-10-5.6c-0.3-2,3.7-4.3,9-5S331.7,135.5,331.9,137.5\n L331.9,137.5z\"/\u003e\n \u003cpath class=\"st0\" d=\"M350.7,123.4c0.9,16-3.4,26.9-4,43.9c-0.8,24.7,11.8,53.1-7.2,81.4\"/\u003e\n \u003cpath class=\"st4\" d=\"M0,60.2\"/\u003e\n\u003c/g\u003e\n\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/pg-operator/2.4.2/v1.0.0/model.json b/server/meshmodel/pg-operator/2.4.2/v1.0.0/model.json new file mode 100644 index 00000000000..f4546a3464d --- /dev/null +++ b/server/meshmodel/pg-operator/2.4.2/v1.0.0/model.json @@ -0,0 +1,42 @@ +{ + "category": { + "name": "Database" + }, + "displayName": "Percona Postgres Operator", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "capabilities": null, + "isAnnotation": false, + "primaryColor": "#336791", + "secondaryColor": "#00D3A9", + "shape": "circle", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 432.071 445.383\" xml:space=\"preserve\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"orginal\" style=\"fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;\"\u003e\n\u0026#x9;\u003c/g\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_x0020_3\" style=\"fill-rule:nonzero;clip-rule:nonzero;fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#000000;stroke:#000000;stroke-width:37.3953;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M323.205,324.227c2.833-23.601,1.984-27.062,19.563-23.239l4.463,0.392c13.517,0.615,31.199-2.174,41.587-7c22.362-10.376,35.622-27.7,13.572-23.148c-50.297,10.376-53.755-6.655-53.755-6.655c53.111-78.803,75.313-178.836,56.149-203.322 C352.514-5.534,262.036,26.049,260.522,26.869l-0.482,0.089c-9.938-2.062-21.06-3.294-33.554-3.496c-22.761-0.374-40.032,5.967-53.133,15.904c0,0-161.408-66.498-153.899,83.628c1.597,31.936,45.777,241.655,98.47,178.31 c19.259-23.163,37.871-42.748,37.871-42.748c9.242,6.14,20.307,9.272,31.912,8.147l0.897-0.765c-0.281,2.876-0.157,5.689,0.359,9.019c-13.572,15.167-9.584,17.83-36.723,23.416c-27.457,5.659-11.326,15.734-0.797,18.367c12.768,3.193,42.305,7.716,62.268-20.224 l-0.795,3.188c5.325,4.26,4.965,30.619,5.72,49.452c0.756,18.834,2.017,36.409,5.856,46.771c3.839,10.36,8.369,37.05,44.036,29.406c29.809-6.388,52.6-15.582,54.677-101.107\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#336791;stroke:none;\" d=\"M402.395,271.23c-50.302,10.376-53.76-6.655-53.76-6.655c53.111-78.808,75.313-178.843,56.153-203.326c-52.27-66.785-142.752-35.2-144.262-34.38l-0.486,0.087c-9.938-2.063-21.06-3.292-33.56-3.496c-22.761-0.373-40.026,5.967-53.127,15.902 c0,0-161.411-66.495-153.904,83.63c1.597,31.938,45.776,241.657,98.471,178.312c19.26-23.163,37.869-42.748,37.869-42.748c9.243,6.14,20.308,9.272,31.908,8.147l0.901-0.765c-0.28,2.876-0.152,5.689,0.361,9.019c-13.575,15.167-9.586,17.83-36.723,23.416 c-27.459,5.659-11.328,15.734-0.796,18.367c12.768,3.193,42.307,7.716,62.266-20.224l-0.796,3.188c5.319,4.26,9.054,27.711,8.428,48.969c-0.626,21.259-1.044,35.854,3.147,47.254c4.191,11.4,8.368,37.05,44.042,29.406c29.809-6.388,45.256-22.942,47.405-50.555 c1.525-19.631,4.976-16.729,5.194-34.28l2.768-8.309c3.192-26.611,0.507-35.196,18.872-31.203l4.463,0.392c13.517,0.615,31.208-2.174,41.591-7c22.358-10.376,35.618-27.7,13.573-23.148z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M215.866,286.484c-1.385,49.516,0.348,99.377,5.193,111.495c4.848,12.118,15.223,35.688,50.9,28.045c29.806-6.39,40.651-18.756,45.357-46.051c3.466-20.082,10.148-75.854,11.005-87.281\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M173.104,38.256c0,0-161.521-66.016-154.012,84.109c1.597,31.938,45.779,241.664,98.473,178.316c19.256-23.166,36.671-41.335,36.671-41.335\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M260.349,26.207c-5.591,1.753,89.848-34.889,144.087,34.417c19.159,24.484-3.043,124.519-56.153,203.329\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke-linejoin:bevel;\" d=\"M348.282,263.953c0,0,3.461,17.036,53.764,6.653c22.04-4.552,8.776,12.774-13.577,23.155c-18.345,8.514-59.474,10.696-60.146-1.069c-1.729-30.355,21.647-21.133,19.96-28.739c-1.525-6.85-11.979-13.573-18.894-30.338 c-6.037-14.633-82.796-126.849,21.287-110.183c3.813-0.789-27.146-99.002-124.553-100.599c-97.385-1.597-94.19,119.762-94.19,119.762\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M188.604,274.334c-13.577,15.166-9.584,17.829-36.723,23.417c-27.459,5.66-11.326,15.733-0.797,18.365c12.768,3.195,42.307,7.718,62.266-20.229c6.078-8.509-0.036-22.086-8.385-25.547c-4.034-1.671-9.428-3.765-16.361,3.994z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M187.715,274.069c-1.368-8.917,2.93-19.528,7.536-31.942c6.922-18.626,22.893-37.255,10.117-96.339c-9.523-44.029-73.396-9.163-73.436-3.193c-0.039,5.968,2.889,30.26-1.067,58.548c-5.162,36.913,23.488,68.132,56.479,64.938\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#FFFFFF;stroke-width:4.155;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M172.517,141.7c-0.288,2.039,3.733,7.48,8.976,8.207c5.234,0.73,9.714-3.522,9.998-5.559c0.284-2.039-3.732-4.285-8.977-5.015c-5.237-0.731-9.719,0.333-9.996,2.367z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"fill:#FFFFFF;stroke-width:2.0775;stroke-linecap:butt;stroke-linejoin:miter;\" d=\"M331.941,137.543c0.284,2.039-3.732,7.48-8.976,8.207c-5.238,0.73-9.718-3.522-10.005-5.559c-0.277-2.039,3.74-4.285,8.979-5.015c5.239-0.73,9.718,0.333,10.002,2.368z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M350.676,123.432c0.863,15.994-3.445,26.888-3.988,43.914c-0.804,24.748,11.799,53.074-7.191,81.435\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"stroke-width:3;\" d=\"M0,60.232\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 432.1 445.4\" style=\"enable-background:new 0 0 432.1 445.4;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n .st0{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;}\n .st1{fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:bevel;}\n .st2{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:4.155;}\n .st3{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:2.0775;}\n .st4{fill:none;stroke:#FFFFFF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;}\n\u003c/style\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"orginal\"\u003e\n\u003c/g\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_x0020_3\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M215.9,286.5c-1.4,49.5,0.3,99.4,5.2,111.5c4.8,12.1,15.2,35.7,50.9,28c29.8-6.4,40.7-18.8,45.4-46.1\u0026#xA; c3.5-20.1,10.1-75.9,11-87.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M173.1,38.3c0,0-161.5-66-154,84.1c1.6,31.9,45.8,241.7,98.5,178.3c19.3-23.2,36.7-41.3,36.7-41.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M260.3,26.2c-5.6,1.8,89.8-34.9,144.1,34.4c19.2,24.5-3,124.5-56.2,203.3\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st1\" d=\"M348.3,264c0,0,3.5,17,53.8,6.7c22-4.6,8.8,12.8-13.6,23.2c-18.3,8.5-59.5,10.7-60.1-1.1\u0026#xA; C326.6,262.3,350,271.6,348.3,264c-1.5-6.9-12-13.6-18.9-30.3c-6-14.6-82.8-126.8,21.3-110.2c3.8-0.8-27.1-99-124.6-100.6\u0026#xA; c-97.4-1.6-94.2,119.8-94.2,119.8\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M188.6,274.3c-13.6,15.2-9.6,17.8-36.7,23.4c-27.5,5.7-11.3,15.7-0.8,18.4c12.8,3.2,42.3,7.7,62.3-20.2\u0026#xA; c6.1-8.5,0-22.1-8.4-25.5C200.9,268.7,195.5,266.6,188.6,274.3L188.6,274.3z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M187.7,274.1c-1.4-8.9,2.9-19.5,7.5-31.9c6.9-18.6,22.9-37.3,10.1-96.3c-9.5-44-73.4-9.2-73.4-3.2\u0026#xA; c0,6,2.9,30.3-1.1,58.5c-5.2,36.9,23.5,68.1,56.5,64.9\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st2\" d=\"M172.5,141.7c-0.3,2,3.7,7.5,9,8.2c5.2,0.7,9.7-3.5,10-5.6c0.3-2-3.7-4.3-9-5\u0026#xA; C177.3,138.6,172.8,139.7,172.5,141.7L172.5,141.7z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st3\" d=\"M331.9,137.5c0.3,2-3.7,7.5-9,8.2c-5.2,0.7-9.7-3.5-10-5.6c-0.3-2,3.7-4.3,9-5S331.7,135.5,331.9,137.5\u0026#xA; L331.9,137.5z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M350.7,123.4c0.9,16-3.4,26.9-4,43.9c-0.8,24.7,11.8,53.1-7.2,81.4\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st4\" d=\"M0,60.2\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003c/svg\u003e" + }, + "model": { + "version": "2.4.2" + }, + "name": "pg-operator", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "App Definition and Development", + "version": "v1.0.0", + "components": null, + "relationships": null + } \ No newline at end of file diff --git a/server/meshmodel/ps-db/v0.8.0/v1.0.0/components/PerconaServerMySQL.json b/server/meshmodel/ps-db/v0.8.0/v1.0.0/components/PerconaServerMySQL.json index 84c3d4f9895..6d78e3df91d 100644 --- a/server/meshmodel/ps-db/v0.8.0/v1.0.0/components/PerconaServerMySQL.json +++ b/server/meshmodel/ps-db/v0.8.0/v1.0.0/components/PerconaServerMySQL.json @@ -185,11 +185,11 @@ "schemaVersion": "components.meshery.io/v1beta1", "status": "enabled", "styles": { - "primaryColor": "#e75225", - "secondaryColor": "#e9633b", + "primaryColor": "#C11411", + "secondaryColor": "#00D3A9", "shape": "circle", "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"256px\" height=\"250px\" viewBox=\"0 0 256 250\" version=\"1.1\" preserveAspectRatio=\"xMidYMid\"\u003e\n \u003cdefs\u003e\n \u003clinearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"linearGradient-1\"\u003e\n \u003cstop stop-color=\"#FBB32F\" offset=\"0%\"/\u003e\n \u003cstop stop-color=\"#C11511\" offset=\"50.4738739%\"/\u003e\n \u003cstop stop-color=\"#C11411\" offset=\"100%\"/\u003e\n \u003c/linearGradient\u003e\n \u003c/defs\u003e\n \u003cg\u003e\n \u003cpath d=\"M128,0.5784 C57.308,0.5784 0,56.4134 0,125.2894 C0,168.3754 22.427,206.3554 56.526,228.7594 L56.526,125.3544 C56.525,125.1964 56.503,125.0444 56.503,124.8874 C56.503,124.7294 56.525,124.5774 56.526,124.4194 L56.526,123.5424 L56.569,123.5424 C57.27,83.3964 88.904,51.0614 127.892,51.0614 C167.319,51.0614 199.28,84.1144 199.28,124.8874 C199.28,165.6594 167.319,198.7124 127.892,198.7124 C112.536,198.7124 98.349,193.6504 86.705,185.1204 L86.705,243.3274 C99.665,247.6314 113.545,250.0004 128,250.0004 C198.692,250.0004 256,194.1654 256,125.2894 C256,56.4134 198.692,0.5784 128,0.5784\" fill=\"url(#linearGradient-1)\"/\u003e\n \u003cpath d=\"M171.1966,127.4716 C171.1966,151.0616 152.0736,170.1846 128.4836,170.1846 C104.8936,170.1846 85.7696,151.0616 85.7696,127.4716 C85.7696,103.8816 104.8936,84.7586 128.4836,84.7586 C152.0736,84.7586 171.1966,103.8816 171.1966,127.4716\" fill=\"#FCB42F\"/\u003e\n \u003c/g\u003e\n\u003c/svg\u003e", - "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 256 250\" style=\"enable-background:new 0 0 256 250;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cg\u003e\n\t\u003cpath class=\"st0\" d=\"M128,0.6C57.3,0.6,0,56.4,0,125.3c0,43.1,22.4,81.1,56.5,103.5V125.4c0-0.2,0-0.3,0-0.5c0-0.2,0-0.3,0-0.5\n\t\tv-0.9h0c0.7-40.1,32.3-72.5,71.3-72.5c39.4,0,71.4,33.1,71.4,73.8c0,40.8-32,73.8-71.4,73.8c-15.4,0-29.5-5.1-41.2-13.6v58.2\n\t\tc13,4.3,26.8,6.7,41.3,6.7c70.7,0,128-55.8,128-124.7S198.7,0.6,128,0.6\"/\u003e\n\t\u003cpath class=\"st0\" d=\"M171.2,127.5c0,23.6-19.1,42.7-42.7,42.7s-42.7-19.1-42.7-42.7s19.1-42.7,42.7-42.7S171.2,103.9,171.2,127.5\"\n\t\t/\u003e\n\u003c/g\u003e\n\u003c/svg\u003e" + "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 256 250\" style=\"enable-background:new 0 0 256 250;\" xml:space=\"preserve\" width='256' height='250'\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cg\u003e\n\t\u003cpath class=\"st0\" d=\"M128,0.6C57.3,0.6,0,56.4,0,125.3c0,43.1,22.4,81.1,56.5,103.5V125.4c0-0.2,0-0.3,0-0.5c0-0.2,0-0.3,0-0.5\n\t\tv-0.9h0c0.7-40.1,32.3-72.5,71.3-72.5c39.4,0,71.4,33.1,71.4,73.8c0,40.8-32,73.8-71.4,73.8c-15.4,0-29.5-5.1-41.2-13.6v58.2\n\t\tc13,4.3,26.8,6.7,41.3,6.7c70.7,0,128-55.8,128-124.7S198.7,0.6,128,0.6\"/\u003e\n\t\u003cpath class=\"st0\" d=\"M171.2,127.5c0,23.6-19.1,42.7-42.7,42.7s-42.7-19.1-42.7-42.7s19.1-42.7,42.7-42.7S171.2,103.9,171.2,127.5\"\n\t\t/\u003e\n\u003c/g\u003e\n\u003c/svg\u003e" }, "version": "v1.0.0" } \ No newline at end of file diff --git a/server/meshmodel/ps-db/v0.8.0/v1.0.0/components/PerconaServerMySQLBackup.json b/server/meshmodel/ps-db/v0.8.0/v1.0.0/components/PerconaServerMySQLBackup.json index 88476eeda91..c389018ec8b 100644 --- a/server/meshmodel/ps-db/v0.8.0/v1.0.0/components/PerconaServerMySQLBackup.json +++ b/server/meshmodel/ps-db/v0.8.0/v1.0.0/components/PerconaServerMySQLBackup.json @@ -185,11 +185,11 @@ "schemaVersion": "components.meshery.io/v1beta1", "status": "enabled", "styles": { - "primaryColor": "#e75225", - "secondaryColor": "#e9633b", + "primaryColor": "#C11411", + "secondaryColor": "#00D3A9", "shape": "circle", "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"256px\" height=\"250px\" viewBox=\"0 0 256 250\" version=\"1.1\" preserveAspectRatio=\"xMidYMid\"\u003e\n \u003cdefs\u003e\n \u003clinearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"linearGradient-1\"\u003e\n \u003cstop stop-color=\"#FBB32F\" offset=\"0%\"/\u003e\n \u003cstop stop-color=\"#C11511\" offset=\"50.4738739%\"/\u003e\n \u003cstop stop-color=\"#C11411\" offset=\"100%\"/\u003e\n \u003c/linearGradient\u003e\n \u003c/defs\u003e\n \u003cg\u003e\n \u003cpath d=\"M128,0.5784 C57.308,0.5784 0,56.4134 0,125.2894 C0,168.3754 22.427,206.3554 56.526,228.7594 L56.526,125.3544 C56.525,125.1964 56.503,125.0444 56.503,124.8874 C56.503,124.7294 56.525,124.5774 56.526,124.4194 L56.526,123.5424 L56.569,123.5424 C57.27,83.3964 88.904,51.0614 127.892,51.0614 C167.319,51.0614 199.28,84.1144 199.28,124.8874 C199.28,165.6594 167.319,198.7124 127.892,198.7124 C112.536,198.7124 98.349,193.6504 86.705,185.1204 L86.705,243.3274 C99.665,247.6314 113.545,250.0004 128,250.0004 C198.692,250.0004 256,194.1654 256,125.2894 C256,56.4134 198.692,0.5784 128,0.5784\" fill=\"url(#linearGradient-1)\"/\u003e\n \u003cpath d=\"M171.1966,127.4716 C171.1966,151.0616 152.0736,170.1846 128.4836,170.1846 C104.8936,170.1846 85.7696,151.0616 85.7696,127.4716 C85.7696,103.8816 104.8936,84.7586 128.4836,84.7586 C152.0736,84.7586 171.1966,103.8816 171.1966,127.4716\" fill=\"#FCB42F\"/\u003e\n \u003c/g\u003e\n\u003c/svg\u003e", - "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 256 250\" style=\"enable-background:new 0 0 256 250;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cg\u003e\n\t\u003cpath class=\"st0\" d=\"M128,0.6C57.3,0.6,0,56.4,0,125.3c0,43.1,22.4,81.1,56.5,103.5V125.4c0-0.2,0-0.3,0-0.5c0-0.2,0-0.3,0-0.5\n\t\tv-0.9h0c0.7-40.1,32.3-72.5,71.3-72.5c39.4,0,71.4,33.1,71.4,73.8c0,40.8-32,73.8-71.4,73.8c-15.4,0-29.5-5.1-41.2-13.6v58.2\n\t\tc13,4.3,26.8,6.7,41.3,6.7c70.7,0,128-55.8,128-124.7S198.7,0.6,128,0.6\"/\u003e\n\t\u003cpath class=\"st0\" d=\"M171.2,127.5c0,23.6-19.1,42.7-42.7,42.7s-42.7-19.1-42.7-42.7s19.1-42.7,42.7-42.7S171.2,103.9,171.2,127.5\"\n\t\t/\u003e\n\u003c/g\u003e\n\u003c/svg\u003e" + "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 256 250\" style=\"enable-background:new 0 0 256 250;\" xml:space=\"preserve\" width='256' height='250'\u003e\n\u003cstyle type=\"text/css\"\u003e\n .st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cg\u003e\n \u003cpath class=\"st0\" d=\"M128,0.6C57.3,0.6,0,56.4,0,125.3c0,43.1,22.4,81.1,56.5,103.5V125.4c0-0.2,0-0.3,0-0.5c0-0.2,0-0.3,0-0.5\n v-0.9h0c0.7-40.1,32.3-72.5,71.3-72.5c39.4,0,71.4,33.1,71.4,73.8c0,40.8-32,73.8-71.4,73.8c-15.4,0-29.5-5.1-41.2-13.6v58.2\n c13,4.3,26.8,6.7,41.3,6.7c70.7,0,128-55.8,128-124.7S198.7,0.6,128,0.6\"/\u003e\n \u003cpath class=\"st0\" d=\"M171.2,127.5c0,23.6-19.1,42.7-42.7,42.7s-42.7-19.1-42.7-42.7s19.1-42.7,42.7-42.7S171.2,103.9,171.2,127.5\"\n /\u003e\n\u003c/g\u003e\n\u003c/svg\u003e" }, "version": "v1.0.0" } \ No newline at end of file diff --git a/server/meshmodel/ps-db/v0.8.0/v1.0.0/components/PerconaServerMySQLRestore.json b/server/meshmodel/ps-db/v0.8.0/v1.0.0/components/PerconaServerMySQLRestore.json index aeb658dfe08..58cfa7cbea4 100644 --- a/server/meshmodel/ps-db/v0.8.0/v1.0.0/components/PerconaServerMySQLRestore.json +++ b/server/meshmodel/ps-db/v0.8.0/v1.0.0/components/PerconaServerMySQLRestore.json @@ -185,11 +185,11 @@ "schemaVersion": "components.meshery.io/v1beta1", "status": "enabled", "styles": { - "primaryColor": "#e75225", - "secondaryColor": "#e9633b", + "primaryColor": "#C11411", + "secondaryColor": "#00D3A9", "shape": "circle", "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"256px\" height=\"250px\" viewBox=\"0 0 256 250\" version=\"1.1\" preserveAspectRatio=\"xMidYMid\"\u003e\n \u003cdefs\u003e\n \u003clinearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"linearGradient-1\"\u003e\n \u003cstop stop-color=\"#FBB32F\" offset=\"0%\"/\u003e\n \u003cstop stop-color=\"#C11511\" offset=\"50.4738739%\"/\u003e\n \u003cstop stop-color=\"#C11411\" offset=\"100%\"/\u003e\n \u003c/linearGradient\u003e\n \u003c/defs\u003e\n \u003cg\u003e\n \u003cpath d=\"M128,0.5784 C57.308,0.5784 0,56.4134 0,125.2894 C0,168.3754 22.427,206.3554 56.526,228.7594 L56.526,125.3544 C56.525,125.1964 56.503,125.0444 56.503,124.8874 C56.503,124.7294 56.525,124.5774 56.526,124.4194 L56.526,123.5424 L56.569,123.5424 C57.27,83.3964 88.904,51.0614 127.892,51.0614 C167.319,51.0614 199.28,84.1144 199.28,124.8874 C199.28,165.6594 167.319,198.7124 127.892,198.7124 C112.536,198.7124 98.349,193.6504 86.705,185.1204 L86.705,243.3274 C99.665,247.6314 113.545,250.0004 128,250.0004 C198.692,250.0004 256,194.1654 256,125.2894 C256,56.4134 198.692,0.5784 128,0.5784\" fill=\"url(#linearGradient-1)\"/\u003e\n \u003cpath d=\"M171.1966,127.4716 C171.1966,151.0616 152.0736,170.1846 128.4836,170.1846 C104.8936,170.1846 85.7696,151.0616 85.7696,127.4716 C85.7696,103.8816 104.8936,84.7586 128.4836,84.7586 C152.0736,84.7586 171.1966,103.8816 171.1966,127.4716\" fill=\"#FCB42F\"/\u003e\n \u003c/g\u003e\n\u003c/svg\u003e", - "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 256 250\" style=\"enable-background:new 0 0 256 250;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cg\u003e\n\t\u003cpath class=\"st0\" d=\"M128,0.6C57.3,0.6,0,56.4,0,125.3c0,43.1,22.4,81.1,56.5,103.5V125.4c0-0.2,0-0.3,0-0.5c0-0.2,0-0.3,0-0.5\n\t\tv-0.9h0c0.7-40.1,32.3-72.5,71.3-72.5c39.4,0,71.4,33.1,71.4,73.8c0,40.8-32,73.8-71.4,73.8c-15.4,0-29.5-5.1-41.2-13.6v58.2\n\t\tc13,4.3,26.8,6.7,41.3,6.7c70.7,0,128-55.8,128-124.7S198.7,0.6,128,0.6\"/\u003e\n\t\u003cpath class=\"st0\" d=\"M171.2,127.5c0,23.6-19.1,42.7-42.7,42.7s-42.7-19.1-42.7-42.7s19.1-42.7,42.7-42.7S171.2,103.9,171.2,127.5\"\n\t\t/\u003e\n\u003c/g\u003e\n\u003c/svg\u003e" + "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 256 250\" style=\"enable-background:new 0 0 256 250;\" xml:space=\"preserve\" width='256' height='250'\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cg\u003e\n\t\u003cpath class=\"st0\" d=\"M128,0.6C57.3,0.6,0,56.4,0,125.3c0,43.1,22.4,81.1,56.5,103.5V125.4c0-0.2,0-0.3,0-0.5c0-0.2,0-0.3,0-0.5\n\t\tv-0.9h0c0.7-40.1,32.3-72.5,71.3-72.5c39.4,0,71.4,33.1,71.4,73.8c0,40.8-32,73.8-71.4,73.8c-15.4,0-29.5-5.1-41.2-13.6v58.2\n\t\tc13,4.3,26.8,6.7,41.3,6.7c70.7,0,128-55.8,128-124.7S198.7,0.6,128,0.6\"/\u003e\n\t\u003cpath class=\"st0\" d=\"M171.2,127.5c0,23.6-19.1,42.7-42.7,42.7s-42.7-19.1-42.7-42.7s19.1-42.7,42.7-42.7S171.2,103.9,171.2,127.5\"\n\t\t/\u003e\n\u003c/g\u003e\n\u003c/svg\u003e" }, "version": "v1.0.0" } \ No newline at end of file diff --git a/server/meshmodel/telepresence/2.20.0-test.13/v1.0.0/model.json b/server/meshmodel/telepresence/2.20.0-test.13/v1.0.0/model.json new file mode 100644 index 00000000000..6640888d9f0 --- /dev/null +++ b/server/meshmodel/telepresence/2.20.0-test.13/v1.0.0/model.json @@ -0,0 +1,42 @@ +{ + "category": { + "name": "App Definition and Development" + }, + "displayName": "Telepresence", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "capabilities": null, + "isAnnotation": false, + "primaryColor": "#cf0019", + "secondaryColor": "#FF455E", + "shape": "circle", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"34.85 -0.15 286.30 358.80\" height=\"20\" width=\"20\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003esvg {enable-background:new 0 0 360 360}\u003c/style\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.st5{fill:#fff}\u003c/style\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" id=\"Oval-8-Copy-10\" cx=\"178.814\" cy=\"344.702\" fill=\"#e4e4e4\" rx=\"61.071\" ry=\"7.298\"\u003e\u003c/ellipse\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Combined-Shape-Copy-13\" d=\"M93.487 216.843l-13.31-17.71 2.899-2.146 11.806 15.563 1.288-4.079-11.27-14.919 2.898-2.146 9.66 12.88 1.288-4.08-9.23-12.127 2.897-2.147 7.62 10.089 5.367-17.065s-17.816-30.16-21.466-37.459c-6.01-12.45-43.04-1.932-42.073 20.608.966 22.217 46.152 72.555 46.152 72.555l5.474-17.817z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Combined-Shape-Copy-14\" d=\"M262.639 205.895l13.309-17.71-2.898-2.146-11.806 15.563-1.288-4.078 11.27-14.92-2.899-2.146-9.66 12.88-1.287-4.079 9.23-12.128-2.898-2.147-7.62 10.09-5.367-17.066s17.817-30.16 21.466-37.458c6.01-12.45 43.04-1.932 42.074 20.607s-46.152 72.555-46.152 72.555l-5.474-17.817z\"\u003e\u003c/path\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Group-12-Copy-8\" transform=\"translate(60 164)\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Line-Copy-18\" d=\"M85.112 144.531c-1.18 0-2.146 1.074-2.146 2.254l.858 25.437c0 1.181 1.074 2.147 2.254 2.147l10.197-.322c1.18 0 2.146-1.073 2.146-2.254l-.858-25.437c0-1.18-1.074-2.147-2.254-2.147l-10.197.322z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle-7-Copy-15\" d=\"M70.516 175.657a4.077 4.077 0 0 1 4.078-4.078h19.32c2.253 0 4.078 1.824 4.078 3.434v-3.434c0 1.931-1.825 3.756-3.971 4.078l-9.875 1.61-9.552 2.254c-2.147.537-3.971-.859-3.971-3.113v-.75h-.107z\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Group-12-Copy-9\" transform=\"matrix(-1 0 0 1 115 164)\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Line-Copy-18_1_\" d=\"M-101.058 144.531c-1.18 0-2.146 1.074-2.146 2.254l.858 25.437c0 1.181 1.074 2.147 2.254 2.147l10.197-.322c1.18 0 2.146-1.073 2.146-2.254l-.858-25.437c0-1.18-1.074-2.147-2.254-2.147l-10.197.322z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle-7-Copy-15_1_\" d=\"M-115.762 175.657a4.077 4.077 0 0 1 4.079-4.078h19.32c2.253 0 4.078 1.824 4.078 3.434v-3.434c0 1.931-1.825 3.756-3.972 4.078l-9.874 1.61-9.552 2.254c-2.147.537-3.972-.859-3.972-3.113v-.75h-.107z\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle-2-Copy-16\" d=\"M80.178 104.79c-6.44-54.094 32.52-97.992 87.044-97.992h21.36c54.523 0 93.484 43.898 87.044 97.992l-20.07 168.401c-2.577 22.003-22.648 39.82-44.865 39.82h-65.686c-22.11 0-42.18-17.817-44.864-39.82l-19.963-168.4z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Line-Copy-3\" fill=\"none\" stroke=\"#4a4a4a\" stroke-linecap=\"square\" stroke-width=\"12\" d=\"M179.673 40.5V14.096\"\u003e\u003c/path\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Group-2-Copy\" transform=\"translate(0 23)\"\u003e\u003cradialGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"Shape_1_\" cx=\"-754.846\" cy=\"488.715\" r=\"2.903\" gradientTransform=\"matrix(-38.7287 45.0999 -45.1 -38.7286 -7014.062 53023.762)\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"0\" stop-color=\"#7f7f7f\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"1\"\u003e\u003c/stop\u003e\u003c/radialGradient\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Shape\" fill=\"url(#Shape_1_)\" stroke=\"#000\" stroke-width=\"2\" d=\"M95.848 32.955c-16.1 0-29.194 13.094-29.194 29.194v53.343c0 16.1 12.987 27.584 28.98 25.652l69.013-8.48c7.942-.965 20.929-.965 28.979 0l69.013 8.48c15.992 1.932 28.98-9.552 28.98-25.652V62.15c0-16.1-13.095-29.194-29.195-29.194H95.848z\"\u003e\u003c/path\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" id=\"Oval-9\" cx=\"86.403\" cy=\"54.529\" fill=\"#80ff00\" rx=\"5.152\" ry=\"5.259\"\u003e\u003c/ellipse\u003e\u003c/g\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle-2-Copy-17\" fill=\"#cf0019\" d=\"M94.023 231.333s25.223 19.856 75.239 16.528c49.908-3.434 93.27-27.798 93.27-27.798s5.795 26.403 4.078 42.61c-1.717 16.207-4.508 19.105-4.508 19.105-3.971 10.303-15.455 22.324-25.544 26.832l-1.074.43-7.835 15.777c-.858 1.825-3.22 3.113-5.259 2.79l-22.11-2.79c-2.04-.215-4.4-1.932-5.366-3.65l-2.576-4.614c-.966-1.718-3.435-3.113-5.474-3.113H176.13c-2.04 0-4.615 1.288-5.903 2.898l-4.079 5.152c-1.288 1.61-3.864 3.113-5.903 3.435L142 327.5c-2.04.322-4.293-.966-5.152-2.79l-4.723-9.875c-.858-1.824-3.112-3.863-5.044-4.507l-9.552-3.435c-7.62-2.79-16.207-11.055-19.105-18.46l-1.073-2.684c-4.079-10.304-6.44-27.584-5.152-38.532l1.824-15.884z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"SR-71-Copy-11\" d=\"M206.613 257.521l-.322-1.18c-.322-1.181-.215-2.147.322-2.898.536-.752 1.288-1.396 2.36-1.718.43-.214.967-.322 1.396-.429 1.717-.43 3.22-.644 4.508-.537l.751 2.791a94.47 94.47 0 0 0-4.508.966c-.536.107-.858.322-1.073.43-.214.107-.214.429-.107.75l.107.215c.107.322.215.537.43.644.214.108.536.108.965 0l1.718-.43c1.502-.428 2.683 0 3.542 1.074.429.537.75 1.18.966 1.932l.214.644c.752 2.79-.107 4.508-2.683 5.152-1.825.537-3.005.751-3.542.859-.537.107-1.395.107-2.361 0l-.751-2.791a36.73 36.73 0 0 0 4.83-1.073c.429-.108.643-.215.75-.43.108-.214.215-.429.108-.644l-.107-.322c-.108-.322-.215-.429-.322-.536-.215-.108-.43-.108-.859 0l-1.717.43c-.644.214-1.288.214-1.825.106s-.966-.214-1.288-.536a3.266 3.266 0 0 1-.858-.859c-.215-.43-.537-.966-.644-1.61zm13.523 5.903l-3.649-13.63 6.118-1.61c1.288-.323 2.468-.323 3.327.214s1.61 1.503 2.04 3.113c.429 1.502.429 2.683.214 3.327a6.154 6.154 0 0 0-.43.751c-.107.215-.321.322-.643.537l3.756 4.508-4.078 1.073-3.006-4.293h-1.18l1.395 5.044-3.864.966zm1.61-8.693l2.04-.537c.429-.107.643-.322.75-.537.108-.214 0-.644-.107-1.073-.107-.537-.322-.859-.536-.966-.215-.215-.537-.215-.859-.107l-2.04.536.752 2.684zm8.48 1.824l-.752-2.898 5.796-1.61.751 2.898-5.796 1.61zm4.722-8.157l-.859-3.22 8.909-2.361 1.287 1.18-.965 13.31-3.864 1.073.858-11.377-5.366 1.395zm15.455-7.62l3.65 13.63-3.65.967-2.683-10.197-2.04.966-.643-2.254 1.824-2.146 3.542-.966z\" class=\"st5\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Rectangle-4-Copy-7\" fill=\"#f5a623\" d=\"M175.487 162.427c1.395-1.396 3.756-1.396 5.152 0l18.031 18.031c1.395 1.395 1.932 4.079 1.073 5.903l-19.104 40.893c-.859 1.825-2.254 1.825-3.22 0l-20.93-40.893c-.966-1.824-.536-4.4.86-5.796l18.138-18.138z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M89.408 101.57h-5.044v-3.434h14.06v3.435h-4.937v14.704h-4.079V101.57zm11.806-3.434h11.377v3.435h-7.298v3.649h6.225v3.434h-6.225v4.186h7.513v3.435h-11.592V98.136zm15.241 0h4.079v14.704h7.191v3.435h-11.27V98.136zm14.275 0h11.377v3.435h-7.298v3.649h6.225v3.434h-6.225v4.186h7.513v3.435H130.73V98.136zm15.241 0h6.655c3.97 0 7.083 1.395 7.083 5.796 0 4.293-3.22 6.118-7.083 6.118h-2.576v6.117h-4.079V98.136zm6.333 8.694c2.253 0 3.327-.966 3.327-2.898 0-1.932-1.18-2.576-3.327-2.576h-2.254v5.474h2.254zm20.285 9.445l-3.435-6.547H166.9v6.547h-4.078V98.136h6.547c3.864 0 6.977 1.288 6.977 5.688 0 2.684-1.288 4.401-3.22 5.26l4.078 7.298h-4.615v-.107zm-5.689-9.767h2.04c2.146 0 3.327-.966 3.327-2.684 0-1.824-1.18-2.36-3.327-2.36h-2.04v5.044zm12.987-8.372h11.377v3.435h-7.298v3.649h6.225v3.434h-6.225v4.186h7.513v3.435H179.78V98.136h.107zm16.315 13.094c1.288 1.074 2.897 1.932 4.4 1.932 1.717 0 2.576-.644 2.576-1.717 0-1.18-1.073-1.503-2.576-2.147l-2.361-.966c-1.932-.751-3.65-2.36-3.65-4.937 0-3.005 2.684-5.366 6.44-5.366 2.04 0 4.294.858 5.796 2.36l-2.039 2.577c-1.18-.966-2.361-1.395-3.757-1.395s-2.253.643-2.253 1.61c0 1.073 1.18 1.502 2.79 2.146l2.361.966c2.147.859 3.542 2.361 3.542 4.937 0 3.005-2.468 5.581-6.762 5.581-2.36 0-4.83-.858-6.761-2.576l2.254-3.005zm14.274-13.094h11.377v3.435h-7.298v3.649h6.225v3.434h-6.225v4.186h7.513v3.435H210.37V98.136h.107zm15.134 0h4.186l4.722 9.016 1.825 3.97h.107c-.214-1.931-.536-4.507-.536-6.654v-6.44h3.864v18.14h-4.186l-4.723-9.016-1.824-3.972h-.108c.215 2.04.537 4.401.537 6.548v6.44h-3.971V98.135h.107zm26.189-.322c2.254 0 4.185 1.073 5.366 2.361l-2.254 2.576c-.966-.858-1.824-1.395-3.112-1.395-2.576 0-4.508 2.146-4.508 5.796 0 3.756 1.717 5.903 4.4 5.903 1.503 0 2.576-.644 3.435-1.61l2.254 2.468c-1.503 1.718-3.542 2.684-5.796 2.684-4.723 0-8.586-3.22-8.586-9.338.214-5.903 4.185-9.445 8.8-9.445zm8.371.322h11.377v3.435h-7.298v3.649h6.225v3.434h-6.225v4.186h7.513v3.435h-11.699V98.136h.107z\" class=\"st5\"\u003e\u003c/path\u003e\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"31.21 -1.78 291.82 365.82\" height=\"20\" width=\"20\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003esvg {enable-background:new 0 0 360 360}\u003c/style\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.st2{fill:#fff}\u003c/style\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" d=\"M272.257 184.478l-2.953-2.188-2.084 2.779-.86 7.216zm4.813 5.688l-2.953-2.188-8.594 11.328-.882 7.398zm-82.586 135.528l-2.625-4.704c-.984-1.75-3.5-3.172-5.578-3.172h-10.939c-2.078 0-4.704 1.313-6.016 2.954l-4.157 5.25c-1.312 1.641-3.938 3.172-6.016 3.5l-2.223.314.363 10.763c0 .487-.166.95-.437 1.336v.75a493.023 493.023 0 0 1 21.22-.445c8.872 0 17.303.223 24.94.623v-.787a2.345 2.345 0 0 1-.546-1.477l.365-10.822-2.881-.364c-2.079-.219-4.485-1.969-5.47-3.719zM77.552 201.323l13.533 18.008-.879-7.407-9.701-12.789zm78.41 141.379l-.02.024.61-.029c-.046-.091-.106-.178-.16-.268a2.2 2.2 0 0 1-.43.273zm47.289.174l.841.045c-.048-.053-.09-.109-.136-.164a2.155 2.155 0 0 1-.514-.267 3.283 3.283 0 0 0-.19.386zM87.715 190.906l-.145-1.222-.502.372zm-5.35 4.729l7.011 9.282-.853-7.197-3.205-4.273z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill=\"#fff\" d=\"M226.862 348.475l-9.735-2.297-10.063-1.64c-1.164-.175-2.224-.79-2.972-1.617l-.84-.045c-.142.333-.236.672-.236 1.005v-1.018c-7.637-.4-16.068-.623-24.94-.623-7.452 0-14.597.157-21.22.444v1.197c0-.392-.112-.795-.305-1.184l-.608.029c-.75.925-1.882 1.623-3.134 1.811l-10.064 1.64-9.735 2.298c-2.188.547-4.047-.875-4.047-3.172v-.19c-8.218 1.26-13.127 2.843-13.127 4.565 0 4.108 27.866 7.438 62.24 7.438s62.24-3.33 62.24-7.438c0-1.445-3.46-2.793-9.43-3.935-.223 2.035-1.98 3.243-4.024 2.732z\" opacity=\".5\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M77.552 201.323l2.953-2.188 9.701 12.789-.83-7.007-7.011-9.282 2.953-2.188 3.205 4.273-.808-6.814-.647-.85.502-.372-2.877-24.268C72.59 163.168 63.77 152.913 63.77 139.52v-1.724c-12.204 2.424-25.865 11.85-25.268 25.789.984 22.643 47.036 73.944 47.036 73.944l5.56-18.097-.012-.101-13.533-18.008zm215.488-74.177v12.374c0 14.334-10.1 25.076-23.52 26.251l-2.3 19.298 2.084-2.78 2.953 2.189-5.897 7.807-.837 7.021 8.594-11.328 2.953 2.188-12.429 16.538-.447 3.75 4.891 15.918s46.051-50.973 47.036-73.944c.562-13.111-11.49-22.228-23.08-25.282zM156.278 342.255c.357-.58.578-1.218.578-1.874v1.554c.271-.385.437-.85.437-1.336l-.363-10.763-14.82 2.093.285 8.452h10.304c1.535 0 2.859.834 3.58 1.874zm-11.564.97c-1.203 0-2.297-.985-2.297-2.188l-.022-.656h-9.385a4.155 4.155 0 0 0-4.157 4.156h.11v.575c5.493-.842 12.465-1.54 20.458-2.036l-4.707.149z\" class=\"st2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M155.892 342.728l.05-.002.02-.024c-.022.011-.047.017-.07.026z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M133.01 348.475l9.735-2.297 10.064-1.64c1.252-.189 2.384-.887 3.134-1.812l-.051.002a2 2 0 0 1-.786.168l-5.685.18c-7.993.496-14.965 1.194-20.458 2.036v.19c0 2.298 1.86 3.72 4.047 3.173zm11.704-5.25l4.707-.15c2.09-.129 4.249-.245 6.47-.347.024-.01.049-.015.071-.026.116-.144.22-.292.316-.447-.72-1.04-2.044-1.874-3.579-1.874h-10.304l.022.656c0 1.203 1.094 2.188 2.297 2.188zm57.756-2.625c0 .547.21 1.066.546 1.476v-1.695c0 .656.222 1.295.578 1.874.72-1.04 2.045-1.874 3.58-1.874h10.194l.295-8.733-14.828-1.871-.365 10.822z\" class=\"st2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M215.049 343.225l-10.392-.329c-.246 0-.48-.055-.701-.139.045.055.088.111.136.164 11.07.61 20.383 1.596 26.793 2.822a4.05 4.05 0 0 0 .025-.44v-.766h.11a4.155 4.155 0 0 0-4.158-4.156h-9.494l-.022.656c0 1.203-1.094 2.188-2.297 2.188z\" class=\"st2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M207.064 344.537l10.063 1.64 9.735 2.298c2.045.511 3.801-.697 4.023-2.732-6.41-1.226-15.723-2.212-26.793-2.822.748.827 1.808 1.442 2.972 1.616zm-3.47-2.282c.108.175.229.34.362.502.221.084.455.14.701.14l10.392.328c1.203 0 2.297-.985 2.297-2.188l.022-.656h-10.195c-1.534 0-2.859.834-3.579 1.874z\" class=\"st2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill=\"#fff\" d=\"M264.641 206.704l.882-7.398-3.438 4.533-1.313-4.157 5.588-7.397.86-7.216-7.76 10.347-1.313-4.157 9.407-12.36-2.954-2.188-7.766 10.282-5.47-17.392s1.174-1.986 2.98-5.063l-61.172-7.516c-8.204-.985-21.44-.985-29.534 0l-69.3 8.514a2923.94 2923.94 0 0 0 8.92 15.223l-5.47 17.392-7.767-10.282-2.45 1.815.144 1.222 8.76 11.51-1.312 4.157-6.64-8.853.853 7.197 4.474 5.922-1.313 4.157-2.33-3.072.878 7.407.03.04-.018.061 1.852 15.625c5.762 3.907 30.984 18.881 75.392 15.927 47.14-3.244 88.543-24.806 94.354-27.946l1.5-12.585-.688-2.239 1.134-1.51zm-65.234-18.398l-19.47 41.676c-.876 1.86-2.298 1.86-3.282 0l-21.33-41.676c-.985-1.86-.547-4.485.875-5.907l18.486-18.486c1.422-1.422 3.828-1.422 5.25 0l18.377 18.377c1.422 1.422 1.969 4.157 1.094 6.016zm63.881-132.903c2.167 0 4.278.239 6.315.68C255.94 25.777 225.616 5.306 188.03 5.306h-21.768c-37.904 0-68.422 20.82-81.915 51.551a29.635 29.635 0 0 1 9.174-1.453h169.766z\" opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M95.163 206.573l1.312-4.156-8.76-11.511.808 6.814zm-4.078 12.758l.012.101.018-.06zm-6.392-53.915l2.877 24.268 2.451-1.815 7.767 10.282 5.47-17.392s-4.169-7.056-8.92-15.223l-1.035.127c-2.995.362-5.885.259-8.61-.247zm7.844 49.58l1.313-4.157-4.474-5.922.83 7.007zm170.97-6.782l.687 2.239.447-3.749zm-1.422-4.375l3.438-4.533.837-7.021-5.588 7.397zm1.422-38.176l-9.162-1.125c-1.807 3.077-2.98 5.063-2.98 5.063l5.469 17.392 7.766-10.282 2.954 2.188-9.407 12.36 1.312 4.157 7.76-10.347 2.3-19.298c-1.941.17-3.952.141-6.012-.108z\" class=\"st2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M84.693 165.416L82.166 144.1a73.563 73.563 0 0 1-.786-1.517c-2.408-4.989-9.704-6.357-17.611-4.787v1.724c0 13.393 8.82 23.648 20.924 25.896z\"\u003e\u003c/path\u003e\u003cradialGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"SVGID_1_\" cx=\"-754.841\" cy=\"511.726\" r=\"2.959\" gradientTransform=\"matrix(-38.7287 45.0999 -45.1 -38.7286 -5976.762 53937.52)\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"0\" stop-color=\"#fff\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"1\" stop-color=\"#fff\"\u003e\u003c/stop\u003e\u003c/radialGradient\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill=\"url(#SVGID_1_)\" d=\"M84.693 165.416L82.166 144.1a73.563 73.563 0 0 1-.786-1.517c-2.408-4.989-9.704-6.357-17.611-4.787v1.724c0 13.393 8.82 23.648 20.924 25.896z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M273.711 130.604l-4.191 35.167c13.42-1.175 23.52-11.917 23.52-26.25v-12.375c-8.255-2.176-16.27-1.272-19.329 3.458z\"\u003e\u003c/path\u003e\u003cradialGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"SVGID_2_\" cx=\"-754.841\" cy=\"511.726\" r=\"2.959\" gradientTransform=\"matrix(-38.7287 45.0999 -45.1 -38.7286 -5976.762 53937.52)\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"0\" stop-color=\"#fff\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"1\" stop-color=\"#fff\"\u003e\u003c/stop\u003e\u003c/radialGradient\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill=\"url(#SVGID_2_)\" d=\"M273.711 130.604l-4.191 35.167c13.42-1.175 23.52-11.917 23.52-26.25v-12.375c-8.255-2.176-16.27-1.272-19.329 3.458z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M154.45 104.298c0-1.969-1.204-2.625-3.392-2.625h-2.297v5.579h2.297c2.298 0 3.391-.985 3.391-2.954z\" class=\"st2\"\u003e\u003c/path\u003e\u003cradialGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"SVGID_3_\" cx=\"-754.841\" cy=\"511.726\" r=\"2.959\" gradientTransform=\"matrix(-38.7287 45.0999 -45.1 -38.7286 -5976.762 53937.52)\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"0\" stop-color=\"#7f7f7f\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"1\"\u003e\u003c/stop\u003e\u003c/radialGradient\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill=\"url(#SVGID_3_)\" d=\"M154.45 104.298c0-1.969-1.204-2.625-3.392-2.625h-2.297v5.579h2.297c2.298 0 3.391-.985 3.391-2.954z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M171.404 104.189c0-1.86-1.203-2.407-3.39-2.407h-2.08v5.141h2.08c2.187 0 3.39-.984 3.39-2.734z\" class=\"st2\"\u003e\u003c/path\u003e\u003cradialGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"SVGID_4_\" cx=\"-754.841\" cy=\"511.726\" r=\"2.959\" gradientTransform=\"matrix(-38.7287 45.0999 -45.1 -38.7286 -5976.762 53937.52)\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"0\" stop-color=\"#7f7f7f\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"1\"\u003e\u003c/stop\u003e\u003c/radialGradient\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill=\"url(#SVGID_4_)\" d=\"M171.404 104.189c0-1.86-1.203-2.407-3.39-2.407h-2.08v5.141h2.08c2.187 0 3.39-.984 3.39-2.734z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M84.693 165.416c2.725.506 5.615.61 8.61.247l1.036-.127c-4.594-7.899-9.728-16.828-12.173-21.436l2.527 21.316z\" class=\"st2\"\u003e\u003c/path\u003e\u003cradialGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"SVGID_5_\" cx=\"-754.841\" cy=\"511.726\" r=\"2.959\" gradientTransform=\"matrix(-38.7287 45.0999 -45.1 -38.7286 -5976.762 53937.52)\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"0\" stop-color=\"#fff\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"1\" stop-color=\"#fff\"\u003e\u003c/stop\u003e\u003c/radialGradient\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill=\"url(#SVGID_5_)\" d=\"M84.693 165.416c2.725.506 5.615.61 8.61.247l1.036-.127c-4.594-7.899-9.728-16.828-12.173-21.436l2.527 21.316z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M273.242 131.426c-2.775 5.55-13.586 24.066-18.897 33.112l9.162 1.125c2.06.25 4.07.278 6.013.108l4.191-35.167a7.61 7.61 0 0 0-.47.822z\" class=\"st2\"\u003e\u003c/path\u003e\u003cradialGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"SVGID_6_\" cx=\"-754.841\" cy=\"511.726\" r=\"2.959\" gradientTransform=\"matrix(-38.7287 45.0999 -45.1 -38.7286 -5976.762 53937.52)\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"0\" stop-color=\"#fff\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"1\" stop-color=\"#fff\"\u003e\u003c/stop\u003e\u003c/radialGradient\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill=\"url(#SVGID_6_)\" d=\"M273.242 131.426c-2.775 5.55-13.586 24.066-18.897 33.112l9.162 1.125c2.06.25 4.07.278 6.013.108l4.191-35.167a7.61 7.61 0 0 0-.47.822z\"\u003e\u003c/path\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" cx=\"83.896\" cy=\"77.389\" class=\"st2\" rx=\"5.251\" ry=\"5.36\"\u003e\u003c/ellipse\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M218.168 316.687l-.505 14.961 4.824.61c2.078.327 4.485-.985 5.36-2.845l7.985-16.08 1.094-.437c10.282-4.594 21.986-16.845 26.034-27.346 0 0 2.844-2.954 4.594-19.471 1.75-16.517-4.157-43.426-4.157-43.426s-.243.137-.702.385l-6.408 53.76c-2.327 19.878-18.667 36.392-38.12 39.89zm-59.015 12.836c2.078-.329 4.704-1.86 6.016-3.5l4.157-5.251c1.312-1.641 3.938-2.954 6.016-2.954h10.939c2.078 0 4.594 1.422 5.578 3.172l2.625 4.704c.985 1.75 3.391 3.5 5.47 3.72l2.88.363.42-12.396H156.51l.42 12.455 2.223-.313zm-61.256-52.724l-4.948-41.742a25.809 25.809 0 0 1-1.287-.918l-1.86 16.189c-1.312 11.157 1.095 28.768 5.251 39.269l1.094 2.734c2.953 7.548 11.704 15.97 19.47 18.815l9.736 3.5c1.969.656 4.266 2.735 5.141 4.594l4.813 10.064c.875 1.86 3.172 3.172 5.25 2.844l1.553-.22-.493-14.597c-21.73-1.036-41.066-18.775-43.72-40.532z\" class=\"st2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M156.51 317.38h-12.89c-.67 0-1.337-.018-2.003-.05l.493 14.599 14.82-2.093-.42-12.455zm54.054 0h-7.31l-.42 12.397 14.829 1.871.505-14.96a42.953 42.953 0 0 1-7.604.693zm13.346-59.942c.437-.11.655-.329.765-.547.11-.22 0-.657-.11-1.094-.109-.547-.328-.875-.547-.985-.218-.218-.546-.218-.875-.11l-2.078.548.766 2.734 2.078-.546z\" class=\"st2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M92.949 235.057l4.948 41.742c2.654 21.757 21.99 39.496 43.72 40.532l-.075-2.218c0-1.204.984-2.298 2.188-2.298l10.391-.328c1.203 0 2.297.985 2.297 2.188l.092 2.706h46.743l.092-2.706c0-1.203 1.093-2.188 2.297-2.188l10.391.328c1.204 0 2.188 1.094 2.188 2.298l-.053 1.574c19.452-3.497 35.792-20.01 38.12-39.888l6.407-53.761c-5.811 3.14-47.214 24.702-94.354 27.946-44.408 2.954-69.63-12.02-75.392-15.927zm154.478 9.692l3.61-.985 3.719 13.892-3.72.985-2.734-10.392-2.078.985-.657-2.297 1.86-2.188zm-3.938 1.094l1.313 1.203-.985 13.564-3.938 1.094.875-11.595-5.469 1.422-.875-3.282 9.079-2.406zm-7.876 9.407l.766 2.953-5.907 1.641-.765-2.953 5.906-1.641zm-12.907-3.938c1.312-.328 2.516-.328 3.39.219.876.547 1.642 1.531 2.08 3.172.437 1.531.437 2.735.218 3.39-.219.33-.328.548-.438.767-.109.218-.328.328-.656.547l3.829 4.594-4.157 1.094-3.063-4.376h-1.203l1.422 5.141-3.938.985-3.72-13.892 6.236-1.641zm-16.299 5.36c.547-.766 1.313-1.422 2.407-1.75.437-.22.984-.328 1.422-.438 1.75-.437 3.281-.656 4.594-.547l.766 2.844a95.233 95.233 0 0 0-4.594.985c-.547.11-.875.328-1.094.437-.219.11-.219.438-.11.766l.11.219c.11.328.219.547.437.656.22.11.547.11.985 0l1.75-.437c1.531-.438 2.735 0 3.61 1.093.437.547.765 1.204.984 1.97l.219.656c.766 2.844-.11 4.594-2.735 5.25-1.86.547-3.063.766-3.61.875-.546.11-1.421.11-2.406 0l-.766-2.844a37.433 37.433 0 0 0 4.923-1.094c.437-.11.656-.218.765-.437.11-.219.22-.438.11-.657l-.11-.328c-.109-.328-.218-.437-.328-.547-.219-.109-.437-.109-.875 0l-1.75.438a3.653 3.653 0 0 1-1.86.11c-.547-.11-.984-.22-1.312-.548a3.328 3.328 0 0 1-.875-.875c-.219-.437-.547-.984-.657-1.64l-.328-1.204c-.328-1.203-.219-2.187.328-2.953z\" class=\"st2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M156.51 317.38l-.092-2.705c0-1.203-1.094-2.188-2.297-2.188l-10.391.328c-1.204 0-2.188 1.094-2.188 2.298l.075 2.218c.666.031 1.333.05 2.003.05h12.89zm61.658-.693l.053-1.574c0-1.204-.984-2.298-2.188-2.298l-10.391-.328c-1.204 0-2.297.985-2.297 2.188l-.092 2.706h7.311c2.571 0 5.112-.246 7.604-.694z\" class=\"st2\"\u003e\u003c/path\u003e\u003cradialGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"SVGID_7_\" cx=\"169.107\" cy=\"107.689\" r=\"8.371\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"0\" stop-color=\"#fff\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"1\" stop-color=\"#fff\"\u003e\u003c/stop\u003e\u003c/radialGradient\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill=\"url(#SVGID_7_)\" d=\"M168.013 101.782h-2.078v5.141h2.078c2.188 0 3.391-.984 3.391-2.734 0-1.86-1.203-2.407-3.39-2.407z\"\u003e\u003c/path\u003e\u003cradialGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"SVGID_8_\" cx=\"151.605\" cy=\"107.58\" r=\"8.168\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"0\" stop-color=\"#fff\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"1\" stop-color=\"#fff\"\u003e\u003c/stop\u003e\u003c/radialGradient\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill=\"url(#SVGID_8_)\" d=\"M151.058 101.673h-2.297v5.579h2.297c2.298 0 3.391-.985 3.391-2.954 0-1.969-1.203-2.625-3.39-2.625z\"\u003e\u003c/path\u003e\u003cradialGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"SVGID_9_\" cx=\"-754.841\" cy=\"511.726\" r=\"2.959\" gradientTransform=\"matrix(-38.7287 45.0999 -45.1 -38.7286 -5976.762 53937.52)\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"0\" stop-color=\"#fff\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"1\" stop-color=\"#fff\"\u003e\u003c/stop\u003e\u003c/radialGradient\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill=\"url(#SVGID_9_)\" d=\"M269.603 56.084c6.536 14.5 9.263 31.249 7.14 49.09l-3.032 25.43c3.058-4.73 11.074-5.634 19.33-3.458v-41.99c0-14.241-10.055-26.169-23.438-29.072z\"\u003e\u003c/path\u003e\u003cradialGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"SVGID_10_\" cx=\"-754.841\" cy=\"511.726\" r=\"2.959\" gradientTransform=\"matrix(-38.7287 45.0999 -45.1 -38.7286 -5976.762 53937.52)\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"0\" stop-color=\"#fff\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"1\" stop-color=\"#fff\"\u003e\u003c/stop\u003e\u003c/radialGradient\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill=\"url(#SVGID_10_)\" d=\"M269.603 56.084a29.745 29.745 0 0 0-6.315-.681H93.522a29.65 29.65 0 0 0-9.174 1.453c-11.93 3.876-20.579 15.093-20.579 28.3v52.64c7.907-1.57 15.203-.202 17.611 4.787.215.429.482.943.786 1.517 2.445 4.608 7.579 13.537 12.173 21.436l69.299-8.514c8.094-.985 21.33-.985 29.534 0l61.173 7.516c5.311-9.046 16.122-27.562 18.897-33.112.139-.288.299-.559.47-.822l3.03-25.43c2.124-17.841-.603-34.59-7.14-49.09zM78.645 77.389c0-2.96 2.351-5.36 5.25-5.36 2.9 0 5.251 2.4 5.251 5.36 0 2.96-2.35 5.36-5.25 5.36s-5.25-2.4-5.25-5.36zm17.502 24.503h-5.032v14.985H86.96v-14.985h-5.141v-3.5h14.33v3.5zm14.658 14.985H98.99V98.391h11.595v3.5h-7.438v3.72h6.344v3.5h-6.344v4.266h7.657v3.5zm15.204 0h-11.485V98.391h4.156v14.986h7.33v3.5zm14.877 0h-11.814V98.391h11.595v3.5h-7.438v3.72h6.344v3.5h-6.344v4.266h7.657v3.5zm10.5-6.344h-2.625v6.235h-4.156V98.391h6.782c4.047 0 7.219 1.422 7.219 5.907 0 4.376-3.282 6.235-7.22 6.235zm20.346 6.454v-.11l-3.5-6.672h-2.297v6.672h-4.157V98.391h6.673c3.938 0 7.11 1.313 7.11 5.798 0 2.734-1.313 4.485-3.282 5.36l4.157 7.438h-4.704zm19.252-.11h-11.923V98.391h11.704v3.5h-7.438v3.72h6.345v3.5h-6.345v4.266h7.657v3.5zm9.407.547a10.45 10.45 0 0 1-6.891-2.625l2.297-3.063c1.313 1.094 2.953 1.97 4.485 1.97 1.75 0 2.625-.657 2.625-1.75 0-1.204-1.094-1.532-2.625-2.189l-2.407-.984c-1.969-.766-3.719-2.406-3.719-5.032 0-3.063 2.735-5.469 6.563-5.469 2.079 0 4.376.875 5.907 2.406l-2.078 2.626c-1.203-.985-2.407-1.422-3.829-1.422s-2.297.656-2.297 1.64c0 1.094 1.204 1.532 2.844 2.188l2.407.985c2.188.875 3.61 2.406 3.61 5.031 0 3.063-2.516 5.688-6.892 5.688zm21.768-.547h-11.923V98.391h11.704v3.5h-7.438v3.72h6.344v3.5h-6.344v4.266h7.657v3.5zm18.048-.109h-4.266l-4.812-9.188-1.86-4.047h-.11c.22 2.078.548 4.484.548 6.672v6.563h-4.048V98.391h4.376l4.813 9.189 1.86 4.047h.109c-.22-1.969-.547-4.594-.547-6.782v-6.563h3.937v18.486zm12.033.438c-4.813 0-8.75-3.282-8.75-9.517.218-6.016 4.265-9.626 8.969-9.626 2.297 0 4.266 1.094 5.469 2.407l-2.297 2.625c-.985-.875-1.86-1.422-3.172-1.422-2.626 0-4.595 2.188-4.595 5.907 0 3.828 1.75 6.016 4.485 6.016 1.532 0 2.625-.656 3.5-1.64l2.298 2.515c-1.532 1.75-3.61 2.735-5.907 2.735zm20.564-.329h-11.923V98.391h11.705v3.5h-7.439v3.72h6.345v3.5h-6.345v4.266h7.657v3.5z\"\u003e\u003c/path\u003e\u003c/svg\u003e" + }, + "model": { + "version": "2.20.0-test.13" + }, + "name": "telepresence", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Application Definition \u0026 Image Build", + "version": "v1.0.0", + "components": null, + "relationships": null + } \ No newline at end of file diff --git a/server/meshmodel/triggers/15.5.27/v1.0.0/model.json b/server/meshmodel/triggers/15.5.27/v1.0.0/model.json new file mode 100644 index 00000000000..f72658dbed4 --- /dev/null +++ b/server/meshmodel/triggers/15.5.27/v1.0.0/model.json @@ -0,0 +1,42 @@ +{ + "category": { + "name": "Uncategorized" + }, + "displayName": "Triggers", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "capabilities": null, + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "15.5.27" + }, + "name": "triggers", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Uncategorized", + "version": "v1.0.0", + "components": null, + "relationships": null + } \ No newline at end of file diff --git a/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VLogs.json b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VLogs.json new file mode 100644 index 00000000000..d5ee8a3baab --- /dev/null +++ b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VLogs.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "VLogs", + "schema": "{\n \"description\": \"VLogs is the Schema for the vlogs API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"VLogsSpec defines the desired state of VLogs\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity If specified, the pod's scheduling constraints.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"configMaps\": {\n \"description\": \"ConfigMaps is a list of ConfigMaps in the same namespace as the VLogs\\nobject, which shall be mounted into the VLogs Pods.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"containers\": {\n \"description\": \"Containers property allows to inject additions sidecars or to patch existing containers.\\nIt can be useful for proxies, backup, etc.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"items\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"DNSPolicy sets DNS policy for the pod\",\n \"type\": \"string\"\n },\n \"extraArgs\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"ExtraArgs that will be passed to VLogs pod\\nfor example remoteWrite.tmpDataPath: /tmp\",\n \"type\": \"object\"\n },\n \"extraEnvs\": {\n \"description\": \"ExtraEnvs that will be added to VLogs pod\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"format\": \"textarea\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"futureRetention\": {\n \"description\": \"FutureRetention for the stored logs\\nLog entries with timestamps bigger than now+futureRetention are rejected during data ingestion; see https://docs.victoriametrics.com/victorialogs/#retention\",\n \"type\": \"string\"\n },\n \"hostAliases\": {\n \"description\": \"HostAliases provides mapping for ip and hostname,\\nthat would be propagated to pod,\\ncannot be used with HostNetwork.\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\\npod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ip\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"hostNetwork\": {\n \"description\": \"HostNetwork controls whether the pod may use the node network namespace\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image - docker image settings for VLogs\\nif no specified operator uses default config version\",\n \"properties\": {\n \"pullPolicy\": {\n \"description\": \"PullPolicy describes how to pull docker image\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"Repository contains name of docker image + it's repository if needed\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"description\": \"Tag contains desired docker image version\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets An optional list of references to secrets in the same namespace\\nto use for pulling images from registries\\nsee https://kubernetes.io/docs/concepts/containers/images/#referring-to-an-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"initContainers\": {\n \"description\": \"InitContainers allows adding initContainers to the pod definition. Those can be used to e.g.\\nfetch secrets for injection into the VLogs configuration from external sources. Any\\nerrors 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/\\nUsing initContainers for any use case other then secret fetching is entirely outside the scope\\nof what the maintainers will support and by doing so, you accept that this behaviour may break\\nat any time without notice.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"livenessProbe\": {\n \"description\": \"LivenessProbe that will be added CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"logFormat\": {\n \"description\": \"LogFormat for VLogs to be configured with.\",\n \"enum\": [\n \"default\",\n \"json\"\n ],\n \"type\": \"string\"\n },\n \"logIngestedRows\": {\n \"description\": \"Whether to log all the ingested log entries; this can be useful for debugging of data ingestion; see https://docs.victoriametrics.com/victorialogs/data-ingestion/\",\n \"type\": \"boolean\"\n },\n \"logLevel\": {\n \"description\": \"LogLevel for VictoriaLogs to be configured with.\",\n \"enum\": [\n \"INFO\",\n \"WARN\",\n \"ERROR\",\n \"FATAL\",\n \"PANIC\"\n ],\n \"type\": \"string\"\n },\n \"logNewStreams\": {\n \"description\": \"LogNewStreams Whether to log creation of new streams; this can be useful for debugging of high cardinality issues with log streams; see https://docs.victoriametrics.com/victorialogs/keyconcepts/#stream-fields\",\n \"type\": \"boolean\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector Define which Nodes the Pods are scheduled on.\",\n \"type\": \"object\"\n },\n \"paused\": {\n \"description\": \"Paused If set to true all actions on the underlying managed objects are not\\ngoing to be performed, except for delete actions.\",\n \"type\": \"boolean\"\n },\n \"podMetadata\": {\n \"description\": \"PodMetadata configures Labels and Annotations which are propagated to the VLogs pods.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"port\": {\n \"description\": \"Port listen port\",\n \"type\": \"string\"\n },\n \"priorityClassName\": {\n \"description\": \"PriorityClassName assigned to the Pods\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"ReadinessGates defines pod readiness gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readinessProbe\": {\n \"description\": \"ReadinessProbe that will be added CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"removePvcAfterDelete\": {\n \"description\": \"RemovePvcAfterDelete - if true, controller adds ownership to pvc\\nand after VLogs objest deletion - pvc will be garbage collected\\nby controller manager\",\n \"type\": \"boolean\"\n },\n \"replicaCount\": {\n \"description\": \"ReplicaCount is the expected size of the VLogs\\nit can be 0 or 1\\nif you need more - use vm cluster\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"resources\": {\n \"description\": \"Resources container resource request and limits, https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\\nif not defined default resources from operator config will be used\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"retentionPeriod\": {\n \"description\": \"RetentionPeriod for the stored logs\",\n \"type\": \"string\"\n },\n \"revisionHistoryLimitCount\": {\n \"description\": \"The number of old ReplicaSets to retain to allow rollback in deployment or\\nmaximum number of revisions that will be maintained in the StatefulSet's revision history.\\nDefaults to 10.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName - defines runtime class for kubernetes pod.\\nhttps://kubernetes.io/docs/concepts/containers/runtime-class/\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"SchedulerName - defines kubernetes scheduler name\",\n \"type\": \"string\"\n },\n \"secrets\": {\n \"description\": \"Secrets is a list of Secrets in the same namespace as the VLogs\\nobject, which shall be mounted into the VLogs Pods.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nThis defaults to the default PodSecurityContext.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run the\\nVLogs Pods.\",\n \"type\": \"string\"\n },\n \"serviceScrapeSpec\": {\n \"description\": \"ServiceScrapeSpec that will be added to vlogs VMServiceScrape spec\",\n \"format\": \"textarea\",\n \"required\": [\n \"endpoints\"\n ],\n \"type\": \"string\"\n },\n \"serviceSpec\": {\n \"description\": \"ServiceSpec that will be added to vlogs service spec\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"EmbeddedObjectMetadata defines objectMeta for additional service.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"ServiceSpec describes the attributes that a user creates on a service.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"useAsDefault\": {\n \"description\": \"UseAsDefault applies changes from given service definition to the main object Service\\nChanging from headless service to clusterIP or loadbalancer may break cross-component communication\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe that will be added to CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"storage\": {\n \"description\": \"Storage is the definition of how storage will be used by the VLogs\\nby default it`s empty dir\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageDataPath\": {\n \"description\": \"StorageDataPath disables spec.storage option and overrides arg for victoria-logs binary --storageDataPath,\\nits users responsibility to mount proper device into given path.\",\n \"type\": \"string\"\n },\n \"storageMetadata\": {\n \"description\": \"StorageMeta defines annotations and labels attached to PVC for given vlogs CR\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"TerminationGracePeriodSeconds period for container graceful termination\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints embedded kubernetes pod configuration option,\\ncontrols how pods are spread across your cluster among failure-domains\\nsuch as regions, zones, nodes, and other user-defined topology domains\\nhttps://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"format\": \"textarea\",\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"useStrictSecurity\": {\n \"description\": \"UseStrictSecurity enables strict security mode for component\\nit restricts disk writes access\\nuses non-root user out of the box\\ndrops not needed security permissions\",\n \"type\": \"boolean\"\n },\n \"volumeMounts\": {\n \"description\": \"VolumeMounts allows configuration of additional VolumeMounts on the output Deployment definition.\\nVolumeMounts specified will be appended to other VolumeMounts in the VLogs container,\\nthat are generated as a result of StorageSpec objects.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"description\": \"Volumes allows configuration of additional volumes on the output deploy definition.\\nVolumes specified will be appended to other volumes that are generated as a result of\\nStorageSpec objects.\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"retentionPeriod\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"V Logs\",\n \"type\": \"object\"\n}", + "version": "operator.victoriametrics.com/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "V Logs", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz" + }, + "model": { + "category": { + "name": "Observability and Analysis" + }, + "displayName": "Victoria Metrics K8S Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0_36_80\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003c/svg\u003e" + }, + "model": { + "version": "0.25.8" + }, + "name": "victoria-metrics-k8s-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Monitoring", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"18\" height=\"18\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0_36_80\"\u003e\n\u003crect width=\"32\" height=\"32\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMAgent.json b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMAgent.json new file mode 100644 index 00000000000..a1032d61536 --- /dev/null +++ b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMAgent.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "VMAgent", + "schema": "{\n \"description\": \"VMAgent - is a tiny but brave agent, which helps you collect metrics from various sources and stores them in VictoriaMetrics\\nor any other Prometheus-compatible storage system that supports the remote_write protocol.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"VMAgentSpec defines the desired state of VMAgent\",\n \"properties\": {\n \"aPIServerConfig\": {\n \"description\": \"APIServerConfig allows specifying a host and auth methods to access apiserver.\\nIf left empty, VMAgent is assumed to run inside of the cluster\\nand will discover API servers automatically and use the pod's CA certificate\\nand bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization configures generic authorization params\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Reference to the secret with value for authorization\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"credentialsFile\": {\n \"description\": \"File with value for authorization\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of authorization, default to bearer\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerToken\": {\n \"description\": \"Bearer token for accessing apiserver.\",\n \"type\": \"string\"\n },\n \"bearerTokenFile\": {\n \"description\": \"File to read bearer token for accessing apiserver.\",\n \"type\": \"string\"\n },\n \"host\": {\n \"description\": \"Host of apiserver.\\nA valid string consisting of a hostname or IP followed by an optional port number\",\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLSConfig Config to use for accessing apiserver.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"host\"\n ],\n \"type\": \"object\"\n },\n \"additionalScrapeConfigs\": {\n \"description\": \"AdditionalScrapeConfigs As scrape configs are appended, the user is responsible to make sure it\\nis valid. Note that using this feature may expose the possibility to\\nbreak upgrades of VMAgent. It is advised to review VMAgent release\\nnotes to ensure that no incompatible scrape configs are going to break\\nVMAgent after the upgrade.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"affinity\": {\n \"description\": \"Affinity If specified, the pod's scheduling constraints.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"arbitraryFSAccessThroughSMs\": {\n \"description\": \"ArbitraryFSAccessThroughSMs configures whether configuration\\nbased on EndpointAuth can access arbitrary files on the file system\\nof the VMAgent container e.g. bearer token files, basic auth, tls certs\",\n \"properties\": {\n \"deny\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"claimTemplates\": {\n \"description\": \"ClaimTemplates allows adding additional VolumeClaimTemplates for VMAgent in StatefulMode\",\n \"items\": {\n \"description\": \"PersistentVolumeClaim is a user's request for and claim to a persistent volume\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"APIVersion defines the versioned schema of this representation of an object.\\nServers should convert recognized schemas to the latest internal value, and\\nmay reject unrecognized values.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is a string value representing the REST resource this object represents.\\nServers may infer this from the endpoint the client submits requests to.\\nCannot be updated.\\nIn CamelCase.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"Standard object's metadata.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"spec\": {\n \"description\": \"spec defines the desired characteristics of a volume requested by a pod author.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"status\": {\n \"description\": \"status represents the current information/status of a persistent volume claim.\\nRead-only.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the actual access modes the volume backing the PVC has.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"allocatedResourceStatuses\": {\n \"additionalProperties\": {\n \"description\": \"When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource\\nthat it does not recognizes, then it should ignore that update and let other controllers\\nhandle it.\",\n \"type\": \"string\"\n },\n \"description\": \"allocatedResourceStatuses stores status of resource being resized for the given PVC.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\n\\nClaimResourceStatus can be in any of following states:\\n\\t- ControllerResizeInProgress:\\n\\t\\tState set when resize controller starts resizing the volume in control-plane.\\n\\t- ControllerResizeFailed:\\n\\t\\tState set when resize has failed in resize controller with a terminal error.\\n\\t- NodeResizePending:\\n\\t\\tState set when resize controller has finished resizing the volume but further resizing of\\n\\t\\tvolume is needed on the node.\\n\\t- NodeResizeInProgress:\\n\\t\\tState set when kubelet starts resizing the volume.\\n\\t- NodeResizeFailed:\\n\\t\\tState set when resizing has failed in kubelet with a terminal error. Transient errors don't set\\n\\t\\tNodeResizeFailed.\\nFor example: if expanding a PVC for more capacity - this field can be one of the following states:\\n\\t- pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeInProgress\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeFailed\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizePending\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeInProgress\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeFailed\\\"\\nWhen this field is not set, it means that no resize operation is in progress for the given PVC.\\n\\n\\nA controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\\n\\n\\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"granular\"\n },\n \"allocatedResources\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"allocatedResources tracks the resources allocated to a PVC including its capacity.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\n\\nCapacity reported here may be larger than the actual capacity when a volume expansion operation\\nis requested.\\nFor storage quota, the larger value from allocatedResources and PVC.spec.resources is used.\\nIf allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.\\nIf a volume expansion capacity request is lowered, allocatedResources is only\\nlowered if there are no expansion operations in progress and if the actual volume capacity\\nis equal or lower than the requested capacity.\\n\\n\\nA controller that receives PVC update with previously unknown resourceName\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\\n\\n\\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\"\n },\n \"capacity\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"capacity represents the actual resources of the underlying volume.\",\n \"type\": \"object\"\n },\n \"conditions\": {\n \"description\": \"conditions is the current Condition of persistent volume claim. If underlying persistent volume is being\\nresized then the Condition will be set to 'Resizing'.\",\n \"items\": {\n \"description\": \"PersistentVolumeClaimCondition contains details about state of pvc\",\n \"properties\": {\n \"lastProbeTime\": {\n \"description\": \"lastProbeTime is the time we probed the condition.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"lastTransitionTime\": {\n \"description\": \"lastTransitionTime is the time the condition transitioned from one status to another.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"message is the human-readable message indicating details about last transition.\",\n \"type\": \"string\"\n },\n \"reason\": {\n \"description\": \"reason is a unique, this should be a short, machine understandable string that gives the reason\\nfor condition's last transition. If it reports \\\"Resizing\\\" that means the underlying\\npersistent volume is being resized.\",\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"type\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"currentVolumeAttributesClassName\": {\n \"description\": \"currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.\\nWhen unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim\\nThis is an alpha field and requires enabling VolumeAttributesClass feature.\",\n \"type\": \"string\"\n },\n \"modifyVolumeStatus\": {\n \"description\": \"ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.\\nWhen this is unset, there is no ModifyVolume operation being attempted.\\nThis is an alpha field and requires enabling VolumeAttributesClass feature.\",\n \"properties\": {\n \"status\": {\n \"description\": \"status is the status of the ControllerModifyVolume operation. It can be in any of following states:\\n - Pending\\n Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as\\n the specified VolumeAttributesClass not existing.\\n - InProgress\\n InProgress indicates that the volume is being modified.\\n - Infeasible\\n Infeasible indicates that the request has been rejected as invalid by the CSI driver. To\\n\\t resolve the error, a valid VolumeAttributesClass needs to be specified.\\nNote: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.\",\n \"type\": \"string\"\n },\n \"targetVolumeAttributesClassName\": {\n \"description\": \"targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"phase\": {\n \"description\": \"phase represents the current phase of PersistentVolumeClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"configMaps\": {\n \"description\": \"ConfigMaps is a list of ConfigMaps in the same namespace as the vmagent\\nobject, which shall be mounted into the vmagent Pods.\\nwill be mounted at path /etc/vm/configs\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"configReloaderExtraArgs\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"ConfigReloaderExtraArgs that will be passed to VMAuths config-reloader container\\nfor example resyncInterval: \\\"30s\\\"\",\n \"type\": \"object\"\n },\n \"containers\": {\n \"description\": \"Containers property allows to inject additions sidecars or to patch existing containers.\\nIt can be useful for proxies, backup, etc.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"items\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"DNSPolicy set DNS policy for the pod\",\n \"type\": \"string\"\n },\n \"enforcedNamespaceLabel\": {\n \"description\": \"EnforcedNamespaceLabel enforces adding a namespace label of origin for each alert\\nand metric that is user created. The label value will always be the namespace of the object that is\\nbeing created.\",\n \"type\": \"string\"\n },\n \"externalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"ExternalLabels The labels to add to any time series scraped by vmagent.\\nit doesn't affect metrics ingested directly by push API's\",\n \"type\": \"object\"\n },\n \"extraArgs\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"ExtraArgs that will be passed to VMAgent pod\\nfor example remoteWrite.tmpDataPath: /tmp\\nit would be converted to flag --remoteWrite.tmpDataPath=/tmp\",\n \"type\": \"object\"\n },\n \"extraEnvs\": {\n \"description\": \"ExtraEnvs that will be added to VMAgent pod\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"format\": \"textarea\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hostNetwork\": {\n \"description\": \"HostNetwork controls whether the pod may use the node network namespace\",\n \"type\": \"boolean\"\n },\n \"host_aliases\": {\n \"description\": \"HostAliases provides mapping between ip and hostnames,\\nthat would be propagated to pod,\\ncannot be used with HostNetwork.\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\\npod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ip\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"ignoreNamespaceSelectors\": {\n \"description\": \"IgnoreNamespaceSelectors if set to true will ignore NamespaceSelector settings from\\nscrape objects, and they will only discover endpoints\\nwithin their current namespace. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image - docker image settings for VMAgent\\nif no specified operator uses default config version\",\n \"properties\": {\n \"pullPolicy\": {\n \"description\": \"PullPolicy describes how to pull docker image\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"Repository contains name of docker image + it's repository if needed\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"description\": \"Tag contains desired docker image version\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets An optional list of references to secrets in the same namespace\\nto use for pulling images from registries\\nsee https://kubernetes.io/docs/concepts/containers/images/#referring-to-an-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"ingestOnlyMode\": {\n \"description\": \"IngestOnlyMode switches vmagent into unmanaged mode\\nit disables any config generation for scraping\\nCurrently it prevents vmagent from managing tls and auth options for remote write\",\n \"type\": \"boolean\"\n },\n \"initContainers\": {\n \"description\": \"InitContainers allows adding initContainers to the pod definition. Those can be used to e.g.\\nfetch secrets for injection into the vmagent configuration from external sources. Any\\nerrors 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/\\nUsing initContainers for any use case other then secret fetching is entirely outside the scope\\nof what the maintainers will support and by doing so, you accept that this behaviour may break\\nat any time without notice.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"inlineRelabelConfig\": {\n \"description\": \"InlineRelabelConfig - defines GlobalRelabelConfig for vmagent, can be defined directly at CRD.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"inlineScrapeConfig\": {\n \"description\": \"InlineScrapeConfig As scrape configs are appended, the user is responsible to make sure it\\nis valid. Note that using this feature may expose the possibility to\\nbreak upgrades of VMAgent. It is advised to review VMAgent release\\nnotes to ensure that no incompatible scrape configs are going to break\\nVMAgent after the upgrade.\\nit should be defined as single yaml file.\\ninlineScrapeConfig: |\\n - job_name: \\\"prometheus\\\"\\n static_configs:\\n - targets: [\\\"localhost:9090\\\"]\",\n \"type\": \"string\"\n },\n \"insertPorts\": {\n \"description\": \"InsertPorts - additional listen ports for data ingestion.\",\n \"properties\": {\n \"graphitePort\": {\n \"description\": \"GraphitePort listen port\",\n \"type\": \"string\"\n },\n \"influxPort\": {\n \"description\": \"InfluxPort listen port\",\n \"type\": \"string\"\n },\n \"openTSDBHTTPPort\": {\n \"description\": \"OpenTSDBHTTPPort for http connections.\",\n \"type\": \"string\"\n },\n \"openTSDBPort\": {\n \"description\": \"OpenTSDBPort for tcp and udp listen\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"license\": {\n \"description\": \"License allows to configure license key to be used for enterprise features.\\nUsing license key is supported starting from VictoriaMetrics v1.94.0.\\nSee [here](https://docs.victoriametrics.com/enterprise)\",\n \"properties\": {\n \"key\": {\n \"description\": \"Enterprise license key. This flag is available only in [VictoriaMetrics enterprise](https://docs.victoriametrics.com/enterprise).\\nTo request a trial license, [go to](https://victoriametrics.com/products/enterprise/trial)\",\n \"type\": \"string\"\n },\n \"keyRef\": {\n \"description\": \"KeyRef is reference to secret with license key for enterprise features.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"LivenessProbe that will be added CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"logFormat\": {\n \"description\": \"LogFormat for VMAgent to be configured with.\",\n \"enum\": [\n \"default\",\n \"json\"\n ],\n \"type\": \"string\"\n },\n \"logLevel\": {\n \"description\": \"LogLevel for VMAgent to be configured with.\\nINFO, WARN, ERROR, FATAL, PANIC\",\n \"enum\": [\n \"INFO\",\n \"WARN\",\n \"ERROR\",\n \"FATAL\",\n \"PANIC\"\n ],\n \"type\": \"string\"\n },\n \"maxScrapeInterval\": {\n \"description\": \"MaxScrapeInterval allows limiting maximum scrape interval for VMServiceScrape, VMPodScrape and other scrapes\\nIf interval is higher than defined limit, `maxScrapeInterval` will be used.\",\n \"type\": \"string\"\n },\n \"minReadySeconds\": {\n \"description\": \"MinReadySeconds defines a minim number os seconds to wait before starting update next pod\\nif previous in healthy state\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minScrapeInterval\": {\n \"description\": \"MinScrapeInterval allows limiting minimal scrape interval for VMServiceScrape, VMPodScrape and other scrapes\\nIf interval is lower than defined limit, `minScrapeInterval` will be used.\",\n \"type\": \"string\"\n },\n \"nodeScrapeNamespaceSelector\": {\n \"description\": \"NodeScrapeNamespaceSelector defines Namespaces to be selected for VMNodeScrape discovery.\\nWorks in combination with Selector.\\nNamespaceSelector nil - only objects at VMAgent namespace.\\nSelector nil - only objects at NamespaceSelector namespaces.\\nIf both nil - behaviour controlled by selectAllByDefault\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"nodeScrapeRelabelTemplate\": {\n \"description\": \"NodeScrapeRelabelTemplate defines relabel config, that will be added to each VMNodeScrape.\\nit's useful for adding specific labels to all targets\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"nodeScrapeSelector\": {\n \"description\": \"NodeScrapeSelector defines VMNodeScrape to be selected for scraping.\\nWorks in combination with NamespaceSelector.\\nNamespaceSelector nil - only objects at VMAgent namespace.\\nSelector nil - only objects at NamespaceSelector namespaces.\\nIf both nil - behaviour controlled by selectAllByDefault\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector Define which Nodes the Pods are scheduled on.\",\n \"type\": \"object\"\n },\n \"overrideHonorLabels\": {\n \"description\": \"OverrideHonorLabels if set to true overrides all user configured honor_labels.\\nIf HonorLabels is set in scrape objects to true, this overrides honor_labels to false.\",\n \"type\": \"boolean\"\n },\n \"overrideHonorTimestamps\": {\n \"description\": \"OverrideHonorTimestamps allows to globally enforce honoring timestamps in all scrape configs.\",\n \"type\": \"boolean\"\n },\n \"paused\": {\n \"description\": \"Paused If set to true all actions on the underlying managed objects are not\\ngoing to be performed, except for delete actions.\",\n \"type\": \"boolean\"\n },\n \"podDisruptionBudget\": {\n \"description\": \"PodDisruptionBudget created by operator\",\n \"properties\": {\n \"maxUnavailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"An eviction is allowed if at most \\\"maxUnavailable\\\" pods selected by\\n\\\"selector\\\" are unavailable after the eviction, i.e. even in absence of\\nthe evicted pod. For example, one can prevent all voluntary evictions\\nby specifying 0. This is a mutually exclusive setting with \\\"minAvailable\\\".\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minAvailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"An eviction is allowed if at least \\\"minAvailable\\\" pods selected by\\n\\\"selector\\\" will still be available after the eviction, i.e. even in the\\nabsence of the evicted pod. So for example you can prevent all voluntary\\nevictions by specifying \\\"100%\\\".\",\n \"x-kubernetes-int-or-string\": true\n },\n \"selectorLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"replaces default labels selector generated by operator\\nit's useful when you need to create custom budget\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"podMetadata\": {\n \"description\": \"PodMetadata configures Labels and Annotations which are propagated to the vmagent pods.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"podScrapeNamespaceSelector\": {\n \"description\": \"PodScrapeNamespaceSelector defines Namespaces to be selected for VMPodScrape discovery.\\nWorks in combination with Selector.\\nNamespaceSelector nil - only objects at VMAgent namespace.\\nSelector nil - only objects at NamespaceSelector namespaces.\\nIf both nil - behaviour controlled by selectAllByDefault\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"podScrapeRelabelTemplate\": {\n \"description\": \"PodScrapeRelabelTemplate defines relabel config, that will be added to each VMPodScrape.\\nit's useful for adding specific labels to all targets\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"podScrapeSelector\": {\n \"description\": \"PodScrapeSelector defines PodScrapes to be selected for target discovery.\\nWorks in combination with NamespaceSelector.\\nNamespaceSelector nil - only objects at VMAgent namespace.\\nSelector nil - only objects at NamespaceSelector namespaces.\\nIf both nil - behaviour controlled by selectAllByDefault\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"port\": {\n \"description\": \"Port listen address\",\n \"type\": \"string\"\n },\n \"priorityClassName\": {\n \"description\": \"PriorityClassName assigned to the Pods\",\n \"type\": \"string\"\n },\n \"probeNamespaceSelector\": {\n \"description\": \"ProbeNamespaceSelector defines Namespaces to be selected for VMProbe discovery.\\nWorks in combination with Selector.\\nNamespaceSelector nil - only objects at VMAgent namespace.\\nSelector nil - only objects at NamespaceSelector namespaces.\\nIf both nil - behaviour controlled by selectAllByDefault\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"probeScrapeRelabelTemplate\": {\n \"description\": \"ProbeScrapeRelabelTemplate defines relabel config, that will be added to each VMProbeScrape.\\nit's useful for adding specific labels to all targets\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"probeSelector\": {\n \"description\": \"ProbeSelector defines VMProbe to be selected for target probing.\\nWorks in combination with NamespaceSelector.\\nNamespaceSelector nil - only objects at VMAgent namespace.\\nSelector nil - only objects at NamespaceSelector namespaces.\\nIf both nil - behaviour controlled by selectAllByDefault\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readinessGates\": {\n \"description\": \"ReadinessGates defines pod readiness gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readinessProbe\": {\n \"description\": \"ReadinessProbe that will be added CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"relabelConfig\": {\n \"description\": \"RelabelConfig ConfigMap with global relabel config -remoteWrite.relabelConfig\\nThis relabeling is applied to all the collected metrics before sending them to remote storage.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"remoteWrite\": {\n \"description\": \"RemoteWrite list of victoria metrics /some other remote write system\\nfor vm it must looks like: http://victoria-metrics-single:8429/api/v1/write\\nor for cluster different url\\nhttps://github.com/VictoriaMetrics/VictoriaMetrics/tree/master/app/vmagent#splitting-data-streams-among-multiple-systems\",\n \"items\": {\n \"description\": \"VMAgentRemoteWriteSpec defines the remote storage configuration for VmAgent\",\n \"properties\": {\n \"basicAuth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenSecret\": {\n \"description\": \"Optional bearer auth token to use for -remoteWrite.url\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"headers\": {\n \"description\": \"Headers allow configuring custom http headers\\nMust be in form of semicolon separated header with value\\ne.g.\\nheaderName: headerValue\\nvmagent supports since 1.79.0 version\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"inlineUrlRelabelConfig\": {\n \"description\": \"InlineUrlRelabelConfig defines relabeling config for remoteWriteURL, it can be defined at crd spec.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 defines auth configuration\",\n \"properties\": {\n \"client_id\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"client_secret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"client_secret_file\": {\n \"description\": \"ClientSecretFile defines path for client secret file.\",\n \"type\": \"string\"\n },\n \"endpoint_params\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"token_url\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"client_id\",\n \"token_url\"\n ],\n \"type\": \"object\"\n },\n \"sendTimeout\": {\n \"description\": \"Timeout for sending a single block of data to -remoteWrite.url (default 1m0s)\",\n \"pattern\": \"[0-9]+(ms|s|m|h)\",\n \"type\": \"string\"\n },\n \"streamAggrConfig\": {\n \"description\": \"StreamAggrConfig defines stream aggregation configuration for VMAgent for -remoteWrite.url\",\n \"properties\": {\n \"configmap\": {\n \"description\": \"ConfigMap with stream aggregation rules\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dedupInterval\": {\n \"description\": \"Allows setting different de-duplication intervals per each configured remote storage\",\n \"type\": \"string\"\n },\n \"dropInput\": {\n \"description\": \"Allow drop all the input samples after the aggregation\",\n \"type\": \"boolean\"\n },\n \"dropInputLabels\": {\n \"description\": \"labels to drop from samples for aggregator before stream de-duplication and aggregation\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreFirstIntervals\": {\n \"type\": \"integer\"\n },\n \"ignoreOldSamples\": {\n \"description\": \"IgnoreOldSamples instructs to ignore samples with old timestamps outside the current aggregation interval.\",\n \"type\": \"boolean\"\n },\n \"keepInput\": {\n \"description\": \"Allows writing both raw and aggregate data\",\n \"type\": \"boolean\"\n },\n \"rules\": {\n \"description\": \"Stream aggregation rules\",\n \"items\": {\n \"description\": \"StreamAggrRule defines the rule in stream aggregation config\",\n \"properties\": {\n \"by\": {\n \"description\": \"By is an optional list of labels for grouping input series.\\n\\n\\nSee also Without.\\n\\n\\nIf neither By nor Without are set, then the Outputs are calculated\\nindividually per each input time series.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dedup_interval\": {\n \"description\": \"DedupInterval is an optional interval for deduplication.\",\n \"type\": \"string\"\n },\n \"drop_input_labels\": {\n \"description\": \"DropInputLabels is an optional list with labels, which must be dropped before further processing of input samples.\\n\\n\\nLabels are dropped before de-duplication and aggregation.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"flush_on_shutdown\": {\n \"description\": \"FlushOnShutdown defines whether to flush the aggregation state on process termination\\nor config reload. Is `false` by default.\\nIt is not recommended changing this setting, unless unfinished aggregations states\\nare preferred to missing data points.\",\n \"type\": \"boolean\"\n },\n \"ignore_first_intervals\": {\n \"type\": \"integer\"\n },\n \"ignore_old_samples\": {\n \"description\": \"IgnoreOldSamples instructs to ignore samples with old timestamps outside the current aggregation interval.\",\n \"type\": \"boolean\"\n },\n \"input_relabel_configs\": {\n \"description\": \"InputRelabelConfigs is an optional relabeling rules, which are applied on the input\\nbefore aggregation.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"interval\": {\n \"description\": \"Interval is the interval between aggregations.\",\n \"type\": \"string\"\n },\n \"keep_metric_names\": {\n \"description\": \"KeepMetricNames instructs to leave metric names as is for the output time series without adding any suffix.\",\n \"type\": \"boolean\"\n },\n \"match\": {\n \"description\": \"Match is a label selector (or list of label selectors) for filtering time series for the given selector.\\n\\n\\nIf the match isn't set, then all the input time series are processed.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"no_align_flush_to_interval\": {\n \"description\": \"NoAlignFlushToInterval disables aligning of flushes to multiples of Interval.\\nBy default flushes are aligned to Interval.\",\n \"type\": \"boolean\"\n },\n \"output_relabel_configs\": {\n \"description\": \"OutputRelabelConfigs is an optional relabeling rules, which are applied\\non the aggregated output before being sent to remote storage.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"outputs\": {\n \"description\": \"Outputs is a list of output aggregate functions to produce.\\n\\n\\nThe following names are allowed:\\n\\n\\n- total - aggregates input counters\\n- increase - counts the increase over input counters\\n- count_series - counts the input series\\n- count_samples - counts the input samples\\n- sum_samples - sums the input samples\\n- last - the last biggest sample value\\n- min - the minimum sample value\\n- max - the maximum sample value\\n- avg - the average value across all the samples\\n- stddev - standard deviation across all the samples\\n- stdvar - standard variance across all the samples\\n- histogram_bucket - creates VictoriaMetrics histogram for input samples\\n- quantiles(phi1, ..., phiN) - quantiles' estimation for phi in the range [0..1]\\n\\n\\nThe output time series will have the following names:\\n\\n\\n input_name:aggr_\\u003cinterval\\u003e_\\u003coutput\\u003e\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"staleness_interval\": {\n \"description\": \"Staleness interval is interval after which the series state will be reset if no samples have been sent during it.\\nThe parameter is only relevant for outputs: total, total_prometheus, increase, increase_prometheus and histogram_bucket.\",\n \"type\": \"string\"\n },\n \"without\": {\n \"description\": \"Without is an optional list of labels, which must be excluded when grouping input series.\\n\\n\\nSee also By.\\n\\n\\nIf neither By nor Without are set, then the Outputs are calculated\\nindividually per each input time series.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"interval\",\n \"outputs\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"tlsConfig\": {\n \"description\": \"TLSConfig describes tls configuration for remote write target\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"url\": {\n \"description\": \"URL of the endpoint to send samples to.\",\n \"type\": \"string\"\n },\n \"urlRelabelConfig\": {\n \"description\": \"ConfigMap with relabeling config which is applied to metrics before sending them to the corresponding -remoteWrite.url\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"remoteWriteSettings\": {\n \"description\": \"RemoteWriteSettings defines global settings for all remoteWrite urls.\",\n \"properties\": {\n \"flushInterval\": {\n \"description\": \"Interval for flushing the data to remote storage. (default 1s)\",\n \"pattern\": \"[0-9]+(ms|s|m|h)\",\n \"type\": \"string\"\n },\n \"label\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels in the form 'name=value' to add to all the metrics before sending them. This overrides the label if it already exists.\",\n \"type\": \"object\"\n },\n \"maxBlockSize\": {\n \"description\": \"The maximum size in bytes of unpacked request to send to remote storage\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"maxDiskUsagePerURL\": {\n \"description\": \"The maximum file-based buffer size in bytes at -remoteWrite.tmpDataPath\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"queues\": {\n \"description\": \"The number of concurrent queues\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"showURL\": {\n \"description\": \"Whether to show -remoteWrite.url in the exported metrics. It is hidden by default, since it can contain sensitive auth info\",\n \"type\": \"boolean\"\n },\n \"tmpDataPath\": {\n \"description\": \"Path to directory where temporary data for remote write component is stored (default vmagent-remotewrite-data)\",\n \"type\": \"string\"\n },\n \"useMultiTenantMode\": {\n \"description\": \"Configures vmagent accepting data via the same multitenant endpoints as vminsert at VictoriaMetrics cluster does,\\nsee [here](https://docs.victoriametrics.com/vmagent/#multitenancy).\\nit's global setting and affects all remote storage configurations\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"replicaCount\": {\n \"description\": \"ReplicaCount is the expected size of the VMAgent cluster. The controller will\\neventually make the size of the running cluster equal to the expected\\nsize.\\nNOTE enable VMSingle deduplication for replica usage\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"resources\": {\n \"description\": \"Resources container resource request and limits, https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\\nif not specified - default setting will be used\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"revisionHistoryLimitCount\": {\n \"description\": \"The number of old ReplicaSets to retain to allow rollback in deployment or\\nmaximum number of revisions that will be maintained in the StatefulSet's revision history.\\nDefaults to 10.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"rollingUpdate\": {\n \"description\": \"RollingUpdate - overrides deployment update params.\",\n \"properties\": {\n \"maxSurge\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"The maximum number of pods that can be scheduled above the desired number of\\npods.\\nValue can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).\\nThis can not be 0 if MaxUnavailable is 0.\\nAbsolute number is calculated from percentage by rounding up.\\nDefaults to 25%.\\nExample: when this is set to 30%, the new ReplicaSet can be scaled up immediately when\\nthe rolling update starts, such that the total number of old and new pods do not exceed\\n130% of desired pods. Once old pods have been killed,\\nnew ReplicaSet can be scaled up further, ensuring that total number of pods running\\nat any time during the update is at most 130% of desired pods.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxUnavailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"The maximum number of pods that can be unavailable during the update.\\nValue can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).\\nAbsolute number is calculated from percentage by rounding down.\\nThis can not be 0 if MaxSurge is 0.\\nDefaults to 25%.\\nExample: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods\\nimmediately when the rolling update starts. Once new pods are ready, old ReplicaSet\\ncan be scaled down further, followed by scaling up the new ReplicaSet, ensuring\\nthat the total number of pods available at all times during the update is at\\nleast 70% of desired pods.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName - defines runtime class for kubernetes pod.\\nhttps://kubernetes.io/docs/concepts/containers/runtime-class/\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"SchedulerName - defines kubernetes scheduler name\",\n \"type\": \"string\"\n },\n \"scrapeConfigNamespaceSelector\": {\n \"description\": \"ScrapeConfigNamespaceSelector defines Namespaces to be selected for VMScrapeConfig discovery.\\nWorks in combination with Selector.\\nNamespaceSelector nil - only objects at VMAgent namespace.\\nSelector nil - only objects at NamespaceSelector namespaces.\\nIf both nil - behaviour controlled by selectAllByDefault\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"scrapeConfigRelabelTemplate\": {\n \"description\": \"ScrapeConfigRelabelTemplate defines relabel config, that will be added to each VMScrapeConfig.\\nit's useful for adding specific labels to all targets\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"scrapeConfigSelector\": {\n \"description\": \"ScrapeConfigSelector defines VMScrapeConfig to be selected for target discovery.\\nWorks in combination with NamespaceSelector.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"scrapeInterval\": {\n \"description\": \"ScrapeInterval defines how often scrape targets by default\",\n \"pattern\": \"[0-9]+(ms|s|m|h)\",\n \"type\": \"string\"\n },\n \"scrapeTimeout\": {\n \"description\": \"ScrapeTimeout defines global timeout for targets scrape\",\n \"pattern\": \"[0-9]+(ms|s|m|h)\",\n \"type\": \"string\"\n },\n \"secrets\": {\n \"description\": \"Secrets is a list of Secrets in the same namespace as the vmagent\\nobject, which shall be mounted into the vmagent Pods.\\nwill be mounted at path /etc/vm/secrets\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nThis defaults to the default PodSecurityContext.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"selectAllByDefault\": {\n \"description\": \"SelectAllByDefault changes default behavior for empty CRD selectors, such ServiceScrapeSelector.\\nwith selectAllByDefault: true and empty serviceScrapeSelector and ServiceScrapeNamespaceSelector\\nOperator selects all exist serviceScrapes\\nwith selectAllByDefault: false - selects nothing\",\n \"type\": \"boolean\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run the\\nVMAgent Pods.\",\n \"type\": \"string\"\n },\n \"serviceScrapeNamespaceSelector\": {\n \"description\": \"ServiceScrapeNamespaceSelector Namespaces to be selected for VMServiceScrape discovery.\\nWorks in combination with Selector.\\nNamespaceSelector nil - only objects at VMAgent namespace.\\nSelector nil - only objects at NamespaceSelector namespaces.\\nIf both nil - behaviour controlled by selectAllByDefault\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceScrapeRelabelTemplate\": {\n \"description\": \"ServiceScrapeRelabelTemplate defines relabel config, that will be added to each VMServiceScrape.\\nit's useful for adding specific labels to all targets\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"serviceScrapeSelector\": {\n \"description\": \"ServiceScrapeSelector defines ServiceScrapes to be selected for target discovery.\\nWorks in combination with NamespaceSelector.\\nNamespaceSelector nil - only objects at VMAgent namespace.\\nSelector nil - only objects at NamespaceSelector namespaces.\\nIf both nil - behaviour controlled by selectAllByDefault\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceScrapeSpec\": {\n \"description\": \"ServiceScrapeSpec that will be added to vmagent VMServiceScrape spec\",\n \"format\": \"textarea\",\n \"required\": [\n \"endpoints\"\n ],\n \"type\": \"string\"\n },\n \"serviceSpec\": {\n \"description\": \"ServiceSpec that will be added to vmagent service spec\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"EmbeddedObjectMetadata defines objectMeta for additional service.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"ServiceSpec describes the attributes that a user creates on a service.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"useAsDefault\": {\n \"description\": \"UseAsDefault applies changes from given service definition to the main object Service\\nChanging from headless service to clusterIP or loadbalancer may break cross-component communication\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n },\n \"shardCount\": {\n \"description\": \"ShardCount - numbers of shards of VMAgent\\nin this case operator will use 1 deployment/sts per shard with\\nreplicas count according to spec.replicas,\\nsee [here](https://docs.victoriametrics.com/vmagent/#scraping-big-number-of-targets)\",\n \"type\": \"integer\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe that will be added to CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"statefulMode\": {\n \"description\": \"StatefulMode enables StatefulSet for `VMAgent` instead of Deployment\\nit allows using persistent storage for vmagent's persistentQueue\",\n \"type\": \"boolean\"\n },\n \"statefulRollingUpdateStrategy\": {\n \"description\": \"StatefulRollingUpdateStrategy allows configuration for strategyType\\nset it to RollingUpdate for disabling operator statefulSet rollingUpdate\",\n \"type\": \"string\"\n },\n \"statefulStorage\": {\n \"description\": \"StatefulStorage configures storage for StatefulSet\",\n \"properties\": {\n \"disableMountSubPath\": {\n \"description\": \"Deprecated: subPath usage will be disabled by default in a future release, this option will become unnecessary.\\nDisableMountSubPath allows to remove any subPath usage in volume mounts.\",\n \"type\": \"boolean\"\n },\n \"emptyDir\": {\n \"description\": \"EmptyDirVolumeSource to be used by the Prometheus StatefulSets. If specified, used in place of any volumeClaimTemplate. More\\ninfo: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"A PVC spec to be used by the VMAlertManager StatefulSets.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"APIVersion defines the versioned schema of this representation of an object.\\nServers should convert recognized schemas to the latest internal value, and\\nmay reject unrecognized values.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is a string value representing the REST resource this object represents.\\nServers may infer this from the endpoint the client submits requests to.\\nCannot be updated.\\nIn CamelCase.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"EmbeddedMetadata contains metadata relevant to an EmbeddedResource.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Spec defines the desired characteristics of a volume requested by a pod author.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"status\": {\n \"description\": \"Status represents the current information/status of a persistent volume claim.\\nRead-only.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the actual access modes the volume backing the PVC has.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"allocatedResourceStatuses\": {\n \"additionalProperties\": {\n \"description\": \"When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource\\nthat it does not recognizes, then it should ignore that update and let other controllers\\nhandle it.\",\n \"type\": \"string\"\n },\n \"description\": \"allocatedResourceStatuses stores status of resource being resized for the given PVC.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\n\\nClaimResourceStatus can be in any of following states:\\n\\t- ControllerResizeInProgress:\\n\\t\\tState set when resize controller starts resizing the volume in control-plane.\\n\\t- ControllerResizeFailed:\\n\\t\\tState set when resize has failed in resize controller with a terminal error.\\n\\t- NodeResizePending:\\n\\t\\tState set when resize controller has finished resizing the volume but further resizing of\\n\\t\\tvolume is needed on the node.\\n\\t- NodeResizeInProgress:\\n\\t\\tState set when kubelet starts resizing the volume.\\n\\t- NodeResizeFailed:\\n\\t\\tState set when resizing has failed in kubelet with a terminal error. Transient errors don't set\\n\\t\\tNodeResizeFailed.\\nFor example: if expanding a PVC for more capacity - this field can be one of the following states:\\n\\t- pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeInProgress\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeFailed\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizePending\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeInProgress\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeFailed\\\"\\nWhen this field is not set, it means that no resize operation is in progress for the given PVC.\\n\\n\\nA controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\\n\\n\\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"granular\"\n },\n \"allocatedResources\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"allocatedResources tracks the resources allocated to a PVC including its capacity.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\n\\nCapacity reported here may be larger than the actual capacity when a volume expansion operation\\nis requested.\\nFor storage quota, the larger value from allocatedResources and PVC.spec.resources is used.\\nIf allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.\\nIf a volume expansion capacity request is lowered, allocatedResources is only\\nlowered if there are no expansion operations in progress and if the actual volume capacity\\nis equal or lower than the requested capacity.\\n\\n\\nA controller that receives PVC update with previously unknown resourceName\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\\n\\n\\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\"\n },\n \"capacity\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"capacity represents the actual resources of the underlying volume.\",\n \"type\": \"object\"\n },\n \"conditions\": {\n \"description\": \"conditions is the current Condition of persistent volume claim. If underlying persistent volume is being\\nresized then the Condition will be set to 'Resizing'.\",\n \"items\": {\n \"description\": \"PersistentVolumeClaimCondition contains details about state of pvc\",\n \"properties\": {\n \"lastProbeTime\": {\n \"description\": \"lastProbeTime is the time we probed the condition.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"lastTransitionTime\": {\n \"description\": \"lastTransitionTime is the time the condition transitioned from one status to another.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"message is the human-readable message indicating details about last transition.\",\n \"type\": \"string\"\n },\n \"reason\": {\n \"description\": \"reason is a unique, this should be a short, machine understandable string that gives the reason\\nfor condition's last transition. If it reports \\\"Resizing\\\" that means the underlying\\npersistent volume is being resized.\",\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"type\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"currentVolumeAttributesClassName\": {\n \"description\": \"currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.\\nWhen unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim\\nThis is an alpha field and requires enabling VolumeAttributesClass feature.\",\n \"type\": \"string\"\n },\n \"modifyVolumeStatus\": {\n \"description\": \"ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.\\nWhen this is unset, there is no ModifyVolume operation being attempted.\\nThis is an alpha field and requires enabling VolumeAttributesClass feature.\",\n \"properties\": {\n \"status\": {\n \"description\": \"status is the status of the ControllerModifyVolume operation. It can be in any of following states:\\n - Pending\\n Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as\\n the specified VolumeAttributesClass not existing.\\n - InProgress\\n InProgress indicates that the volume is being modified.\\n - Infeasible\\n Infeasible indicates that the request has been rejected as invalid by the CSI driver. To\\n\\t resolve the error, a valid VolumeAttributesClass needs to be specified.\\nNote: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.\",\n \"type\": \"string\"\n },\n \"targetVolumeAttributesClassName\": {\n \"description\": \"targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"phase\": {\n \"description\": \"phase represents the current phase of PersistentVolumeClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"staticScrapeNamespaceSelector\": {\n \"description\": \"StaticScrapeNamespaceSelector defines Namespaces to be selected for VMStaticScrape discovery.\\nWorks in combination with NamespaceSelector.\\nNamespaceSelector nil - only objects at VMAgent namespace.\\nSelector nil - only objects at NamespaceSelector namespaces.\\nIf both nil - behaviour controlled by selectAllByDefault\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"staticScrapeRelabelTemplate\": {\n \"description\": \"StaticScrapeRelabelTemplate defines relabel config, that will be added to each VMStaticScrape.\\nit's useful for adding specific labels to all targets\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"staticScrapeSelector\": {\n \"description\": \"StaticScrapeSelector defines PodScrapes to be selected for target discovery.\\nWorks in combination with NamespaceSelector.\\nIf both nil - match everything.\\nNamespaceSelector nil - only objects at VMAgent namespace.\\nSelector nil - only objects at NamespaceSelector namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"streamAggrConfig\": {\n \"description\": \"StreamAggrConfig defines global stream aggregation configuration for VMAgent\",\n \"properties\": {\n \"configmap\": {\n \"description\": \"ConfigMap with stream aggregation rules\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dedupInterval\": {\n \"description\": \"Allows setting different de-duplication intervals per each configured remote storage\",\n \"type\": \"string\"\n },\n \"dropInput\": {\n \"description\": \"Allow drop all the input samples after the aggregation\",\n \"type\": \"boolean\"\n },\n \"dropInputLabels\": {\n \"description\": \"labels to drop from samples for aggregator before stream de-duplication and aggregation\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreFirstIntervals\": {\n \"type\": \"integer\"\n },\n \"ignoreOldSamples\": {\n \"description\": \"IgnoreOldSamples instructs to ignore samples with old timestamps outside the current aggregation interval.\",\n \"type\": \"boolean\"\n },\n \"keepInput\": {\n \"description\": \"Allows writing both raw and aggregate data\",\n \"type\": \"boolean\"\n },\n \"rules\": {\n \"description\": \"Stream aggregation rules\",\n \"items\": {\n \"description\": \"StreamAggrRule defines the rule in stream aggregation config\",\n \"properties\": {\n \"by\": {\n \"description\": \"By is an optional list of labels for grouping input series.\\n\\n\\nSee also Without.\\n\\n\\nIf neither By nor Without are set, then the Outputs are calculated\\nindividually per each input time series.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dedup_interval\": {\n \"description\": \"DedupInterval is an optional interval for deduplication.\",\n \"type\": \"string\"\n },\n \"drop_input_labels\": {\n \"description\": \"DropInputLabels is an optional list with labels, which must be dropped before further processing of input samples.\\n\\n\\nLabels are dropped before de-duplication and aggregation.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"flush_on_shutdown\": {\n \"description\": \"FlushOnShutdown defines whether to flush the aggregation state on process termination\\nor config reload. Is `false` by default.\\nIt is not recommended changing this setting, unless unfinished aggregations states\\nare preferred to missing data points.\",\n \"type\": \"boolean\"\n },\n \"ignore_first_intervals\": {\n \"type\": \"integer\"\n },\n \"ignore_old_samples\": {\n \"description\": \"IgnoreOldSamples instructs to ignore samples with old timestamps outside the current aggregation interval.\",\n \"type\": \"boolean\"\n },\n \"input_relabel_configs\": {\n \"description\": \"InputRelabelConfigs is an optional relabeling rules, which are applied on the input\\nbefore aggregation.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"interval\": {\n \"description\": \"Interval is the interval between aggregations.\",\n \"type\": \"string\"\n },\n \"keep_metric_names\": {\n \"description\": \"KeepMetricNames instructs to leave metric names as is for the output time series without adding any suffix.\",\n \"type\": \"boolean\"\n },\n \"match\": {\n \"description\": \"Match is a label selector (or list of label selectors) for filtering time series for the given selector.\\n\\n\\nIf the match isn't set, then all the input time series are processed.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"no_align_flush_to_interval\": {\n \"description\": \"NoAlignFlushToInterval disables aligning of flushes to multiples of Interval.\\nBy default flushes are aligned to Interval.\",\n \"type\": \"boolean\"\n },\n \"output_relabel_configs\": {\n \"description\": \"OutputRelabelConfigs is an optional relabeling rules, which are applied\\non the aggregated output before being sent to remote storage.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"outputs\": {\n \"description\": \"Outputs is a list of output aggregate functions to produce.\\n\\n\\nThe following names are allowed:\\n\\n\\n- total - aggregates input counters\\n- increase - counts the increase over input counters\\n- count_series - counts the input series\\n- count_samples - counts the input samples\\n- sum_samples - sums the input samples\\n- last - the last biggest sample value\\n- min - the minimum sample value\\n- max - the maximum sample value\\n- avg - the average value across all the samples\\n- stddev - standard deviation across all the samples\\n- stdvar - standard variance across all the samples\\n- histogram_bucket - creates VictoriaMetrics histogram for input samples\\n- quantiles(phi1, ..., phiN) - quantiles' estimation for phi in the range [0..1]\\n\\n\\nThe output time series will have the following names:\\n\\n\\n input_name:aggr_\\u003cinterval\\u003e_\\u003coutput\\u003e\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"staleness_interval\": {\n \"description\": \"Staleness interval is interval after which the series state will be reset if no samples have been sent during it.\\nThe parameter is only relevant for outputs: total, total_prometheus, increase, increase_prometheus and histogram_bucket.\",\n \"type\": \"string\"\n },\n \"without\": {\n \"description\": \"Without is an optional list of labels, which must be excluded when grouping input series.\\n\\n\\nSee also By.\\n\\n\\nIf neither By nor Without are set, then the Outputs are calculated\\nindividually per each input time series.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"interval\",\n \"outputs\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"TerminationGracePeriodSeconds period for container graceful termination\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints embedded kubernetes pod configuration option,\\ncontrols how pods are spread across your cluster among failure-domains\\nsuch as regions, zones, nodes, and other user-defined topology domains\\nhttps://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"format\": \"textarea\",\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"updateStrategy\": {\n \"description\": \"UpdateStrategy - overrides default update strategy.\\nworks only for deployments, statefulset always use OnDelete.\",\n \"enum\": [\n \"Recreate\",\n \"RollingUpdate\"\n ],\n \"type\": \"string\"\n },\n \"useStrictSecurity\": {\n \"description\": \"UseStrictSecurity enables strict security mode for component\\nit restricts disk writes access\\nuses non-root user out of the box\\ndrops not needed security permissions\",\n \"type\": \"boolean\"\n },\n \"vmAgentExternalLabelName\": {\n \"description\": \"VMAgentExternalLabelName Name of vmAgent external label used to denote vmAgent instance\\nname. Defaults to the value of `prometheus`. External label will\\n_not_ be added when value is set to empty string (`\\\"\\\"`).\",\n \"type\": \"string\"\n },\n \"volumeMounts\": {\n \"description\": \"VolumeMounts allows configuration of additional VolumeMounts on the output deploy definition.\\nVolumeMounts specified will be appended to other VolumeMounts in the vmagent container,\\nthat are generated as a result of StorageSpec objects.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"description\": \"Volumes allows configuration of additional volumes on the output deploy definition.\\nVolumes specified will be appended to other volumes that are generated as a result of\\nStorageSpec objects.\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"remoteWrite\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"VM Agent\",\n \"type\": \"object\"\n}", + "version": "operator.victoriametrics.com/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "VM Agent", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz" + }, + "model": { + "category": { + "name": "Observability and Analysis" + }, + "displayName": "Victoria Metrics K8S Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0_36_80\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003c/svg\u003e" + }, + "model": { + "version": "0.25.8" + }, + "name": "victoria-metrics-k8s-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Monitoring", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"18\" height=\"18\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0_36_80\"\u003e\n\u003crect width=\"32\" height=\"32\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMAlert.json b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMAlert.json new file mode 100644 index 00000000000..ac786a45ea3 --- /dev/null +++ b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMAlert.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "VMAlert", + "schema": "{\n \"description\": \"VMAlert executes a list of given alerting or recording rules against configured address.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"VMAlertSpec defines the desired state of VMAlert\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity If specified, the pod's scheduling constraints.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"configMaps\": {\n \"description\": \"ConfigMaps is a list of ConfigMaps in the same namespace as the VMAlert\\nobject, which shall be mounted into the VMAlert Pods.\\nThe ConfigMaps are mounted into /etc/vm/configs/\\u003cconfigmap-name\\u003e.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"configReloaderExtraArgs\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"ConfigReloaderExtraArgs that will be passed to VMAuths config-reloader container\\nfor example resyncInterval: \\\"30s\\\"\",\n \"type\": \"object\"\n },\n \"containers\": {\n \"description\": \"Containers property allows to inject additions sidecars or to patch existing containers.\\nIt can be useful for proxies, backup, etc.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"datasource\": {\n \"description\": \"Datasource Victoria Metrics or VMSelect url. Required parameter. e.g. http://127.0.0.1:8428\",\n \"properties\": {\n \"basicAuth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenFile\": {\n \"description\": \"Path to bearer token file\",\n \"type\": \"string\"\n },\n \"bearerTokenSecret\": {\n \"description\": \"Optional bearer auth token to use for -remoteWrite.url\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"headers\": {\n \"description\": \"Headers allow configuring custom http headers\\nMust be in form of semicolon separated header with value\\ne.g.\\nheaderName:headerValue\\nvmalert supports it since 1.79.0 version\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 defines OAuth2 configuration\",\n \"format\": \"textarea\",\n \"required\": [\n \"client_id\",\n \"token_url\"\n ],\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLSConfig specifies TLSConfig configuration parameters.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Victoria Metrics or VMSelect url. Required parameter. E.g. http://127.0.0.1:8428\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"items\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"DNSPolicy sets DNS policy for the pod\",\n \"type\": \"string\"\n },\n \"enforcedNamespaceLabel\": {\n \"description\": \"EnforcedNamespaceLabel enforces adding a namespace label of origin for each alert\\nand metric that is user created. The label value will always be the namespace of the object that is\\nbeing created.\",\n \"type\": \"string\"\n },\n \"evaluationInterval\": {\n \"description\": \"EvaluationInterval defines how often to evaluate rules by default\",\n \"pattern\": \"[0-9]+(ms|s|m|h)\",\n \"type\": \"string\"\n },\n \"externalLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"ExternalLabels in the form 'name: value' to add to all generated recording rules and alerts.\",\n \"type\": \"object\"\n },\n \"extraArgs\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"ExtraArgs that will be passed to VMAlert pod\\nfor example -remoteWrite.tmpDataPath=/tmp\",\n \"type\": \"object\"\n },\n \"extraEnvs\": {\n \"description\": \"ExtraEnvs that will be added to VMAlert pod\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"format\": \"textarea\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hostNetwork\": {\n \"description\": \"HostNetwork controls whether the pod may use the node network namespace\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image - docker image settings for VMAlert\\nif no specified operator uses default config version\",\n \"properties\": {\n \"pullPolicy\": {\n \"description\": \"PullPolicy describes how to pull docker image\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"Repository contains name of docker image + it's repository if needed\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"description\": \"Tag contains desired docker image version\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets An optional list of references to secrets in the same namespace\\nto use for pulling images from registries\\nsee https://kubernetes.io/docs/concepts/containers/images/#referring-to-an-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"initContainers\": {\n \"description\": \"InitContainers allows adding initContainers to the pod definition. Those can be used to e.g.\\nfetch secrets for injection into the VMAlert configuration from external sources. Any\\nerrors 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/\\nUsing initContainers for any use case other then secret fetching is entirely outside the scope\\nof what the maintainers will support and by doing so, you accept that this behaviour may break\\nat any time without notice.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"license\": {\n \"description\": \"License allows to configure license key to be used for enterprise features.\\nUsing license key is supported starting from VictoriaMetrics v1.94.0.\\nSee [here](https://docs.victoriametrics.com/enterprise)\",\n \"properties\": {\n \"key\": {\n \"description\": \"Enterprise license key. This flag is available only in [VictoriaMetrics enterprise](https://docs.victoriametrics.com/enterprise).\\nTo request a trial license, [go to](https://victoriametrics.com/products/enterprise/trial)\",\n \"type\": \"string\"\n },\n \"keyRef\": {\n \"description\": \"KeyRef is reference to secret with license key for enterprise features.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"LivenessProbe that will be added CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"logFormat\": {\n \"description\": \"LogFormat for VMAlert to be configured with.\\ndefault or json\",\n \"enum\": [\n \"default\",\n \"json\"\n ],\n \"type\": \"string\"\n },\n \"logLevel\": {\n \"description\": \"LogLevel for VMAlert to be configured with.\",\n \"enum\": [\n \"INFO\",\n \"WARN\",\n \"ERROR\",\n \"FATAL\",\n \"PANIC\"\n ],\n \"type\": \"string\"\n },\n \"minReadySeconds\": {\n \"description\": \"MinReadySeconds defines a minim number os seconds to wait before starting update next pod\\nif previous in healthy state\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector Define which Nodes the Pods are scheduled on.\",\n \"type\": \"object\"\n },\n \"notifier\": {\n \"description\": \"Notifier prometheus alertmanager endpoint spec. Required at least one of notifier or notifiers when there are alerting rules. e.g. http://127.0.0.1:9093\\nIf specified both notifier and notifiers, notifier will be added as last element to notifiers.\\nonly one of notifier options could be chosen: notifierConfigRef or notifiers + notifier\",\n \"properties\": {\n \"basicAuth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenFile\": {\n \"description\": \"Path to bearer token file\",\n \"type\": \"string\"\n },\n \"bearerTokenSecret\": {\n \"description\": \"Optional bearer auth token to use for -remoteWrite.url\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"headers\": {\n \"description\": \"Headers allow configuring custom http headers\\nMust be in form of semicolon separated header with value\\ne.g.\\nheaderName:headerValue\\nvmalert supports it since 1.79.0 version\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 defines OAuth2 configuration\",\n \"format\": \"textarea\",\n \"required\": [\n \"client_id\",\n \"token_url\"\n ],\n \"type\": \"string\"\n },\n \"selector\": {\n \"description\": \"Selector allows service discovery for alertmanager\\nin this case all matched vmalertmanager replicas will be added into vmalert notifier.url\\nas statefulset pod.fqdn\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label selector is a label query over a set of resources. The result of matchLabels and\\nmatchExpressions are ANDed. An empty label selector matches all objects. A null\\nlabel selector matches no objects.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"NamespaceSelector is a selector for selecting either all namespaces or a\\nlist of namespaces.\",\n \"properties\": {\n \"any\": {\n \"description\": \"Boolean describing whether all namespaces are selected in contrast to a\\nlist restricting them.\",\n \"type\": \"boolean\"\n },\n \"matchNames\": {\n \"description\": \"List of namespace names.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tlsConfig\": {\n \"description\": \"TLSConfig specifies TLSConfig configuration parameters.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"AlertManager url. E.g. http://127.0.0.1:9093\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"notifierConfigRef\": {\n \"description\": \"NotifierConfigRef reference for secret with notifier configuration for vmalert\\nonly one of notifier options could be chosen: notifierConfigRef or notifiers + notifier\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"notifiers\": {\n \"description\": \"Notifiers prometheus alertmanager endpoints. Required at least one of notifier or notifiers when there are alerting rules. e.g. http://127.0.0.1:9093\\nIf specified both notifier and notifiers, notifier will be added as last element to notifiers.\\nonly one of notifier options could be chosen: notifierConfigRef or notifiers + notifier\",\n \"items\": {\n \"description\": \"VMAlertNotifierSpec defines the notifier url for sending information about alerts\",\n \"properties\": {\n \"basicAuth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenFile\": {\n \"description\": \"Path to bearer token file\",\n \"type\": \"string\"\n },\n \"bearerTokenSecret\": {\n \"description\": \"Optional bearer auth token to use for -remoteWrite.url\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"headers\": {\n \"description\": \"Headers allow configuring custom http headers\\nMust be in form of semicolon separated header with value\\ne.g.\\nheaderName:headerValue\\nvmalert supports it since 1.79.0 version\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 defines OAuth2 configuration\",\n \"format\": \"textarea\",\n \"required\": [\n \"client_id\",\n \"token_url\"\n ],\n \"type\": \"string\"\n },\n \"selector\": {\n \"description\": \"Selector allows service discovery for alertmanager\\nin this case all matched vmalertmanager replicas will be added into vmalert notifier.url\\nas statefulset pod.fqdn\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label selector is a label query over a set of resources. The result of matchLabels and\\nmatchExpressions are ANDed. An empty label selector matches all objects. A null\\nlabel selector matches no objects.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"NamespaceSelector is a selector for selecting either all namespaces or a\\nlist of namespaces.\",\n \"properties\": {\n \"any\": {\n \"description\": \"Boolean describing whether all namespaces are selected in contrast to a\\nlist restricting them.\",\n \"type\": \"boolean\"\n },\n \"matchNames\": {\n \"description\": \"List of namespace names.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tlsConfig\": {\n \"description\": \"TLSConfig specifies TLSConfig configuration parameters.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"AlertManager url. E.g. http://127.0.0.1:9093\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"paused\": {\n \"description\": \"Paused If set to true all actions on the underlying managed objects are not\\ngoing to be performed, except for delete actions.\",\n \"type\": \"boolean\"\n },\n \"podDisruptionBudget\": {\n \"description\": \"PodDisruptionBudget created by operator\",\n \"properties\": {\n \"maxUnavailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"An eviction is allowed if at most \\\"maxUnavailable\\\" pods selected by\\n\\\"selector\\\" are unavailable after the eviction, i.e. even in absence of\\nthe evicted pod. For example, one can prevent all voluntary evictions\\nby specifying 0. This is a mutually exclusive setting with \\\"minAvailable\\\".\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minAvailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"An eviction is allowed if at least \\\"minAvailable\\\" pods selected by\\n\\\"selector\\\" will still be available after the eviction, i.e. even in the\\nabsence of the evicted pod. So for example you can prevent all voluntary\\nevictions by specifying \\\"100%\\\".\",\n \"x-kubernetes-int-or-string\": true\n },\n \"selectorLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"replaces default labels selector generated by operator\\nit's useful when you need to create custom budget\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"podMetadata\": {\n \"description\": \"PodMetadata configures Labels and Annotations which are propagated to the VMAlert pods.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"port\": {\n \"description\": \"Port for listen\",\n \"type\": \"string\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class assigned to the Pods\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"ReadinessGates defines pod readiness gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readinessProbe\": {\n \"description\": \"ReadinessProbe that will be added CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"remoteRead\": {\n \"description\": \"RemoteRead Optional URL to read vmalert state (persisted via RemoteWrite)\\nThis configuration only makes sense if alerts state has been successfully\\npersisted (via RemoteWrite) before.\\nsee -remoteRead.url docs in vmalerts for details.\\nE.g. http://127.0.0.1:8428\",\n \"properties\": {\n \"basicAuth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenFile\": {\n \"description\": \"Path to bearer token file\",\n \"type\": \"string\"\n },\n \"bearerTokenSecret\": {\n \"description\": \"Optional bearer auth token to use for -remoteWrite.url\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"headers\": {\n \"description\": \"Headers allow configuring custom http headers\\nMust be in form of semicolon separated header with value\\ne.g.\\nheaderName:headerValue\\nvmalert supports it since 1.79.0 version\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"lookback\": {\n \"description\": \"Lookback defines how far to look into past for alerts timeseries. For example, if lookback=1h then range from now() to now()-1h will be scanned. (default 1h0m0s)\\nApplied only to RemoteReadSpec\",\n \"type\": \"string\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 defines OAuth2 configuration\",\n \"format\": \"textarea\",\n \"required\": [\n \"client_id\",\n \"token_url\"\n ],\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLSConfig specifies TLSConfig configuration parameters.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"URL of the endpoint to send samples to.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"remoteWrite\": {\n \"description\": \"RemoteWrite Optional URL to remote-write compatible storage to persist\\nvmalert state and rule results to.\\nRule results will be persisted according to each rule.\\nAlerts state will be persisted in the form of time series named ALERTS and ALERTS_FOR_STATE\\nsee -remoteWrite.url docs in vmalerts for details.\\nE.g. http://127.0.0.1:8428\",\n \"properties\": {\n \"basicAuth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenFile\": {\n \"description\": \"Path to bearer token file\",\n \"type\": \"string\"\n },\n \"bearerTokenSecret\": {\n \"description\": \"Optional bearer auth token to use for -remoteWrite.url\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"concurrency\": {\n \"description\": \"Defines number of readers that concurrently write into remote storage (default 1)\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"flushInterval\": {\n \"description\": \"Defines interval of flushes to remote write endpoint (default 5s)\",\n \"pattern\": \"[0-9]+(ms|s|m|h)\",\n \"type\": \"string\"\n },\n \"headers\": {\n \"description\": \"Headers allow configuring custom http headers\\nMust be in form of semicolon separated header with value\\ne.g.\\nheaderName:headerValue\\nvmalert supports it since 1.79.0 version\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maxBatchSize\": {\n \"description\": \"Defines defines max number of timeseries to be flushed at once (default 1000)\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"maxQueueSize\": {\n \"description\": \"Defines the max number of pending datapoints to remote write endpoint (default 100000)\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 defines OAuth2 configuration\",\n \"format\": \"textarea\",\n \"required\": [\n \"client_id\",\n \"token_url\"\n ],\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLSConfig specifies TLSConfig configuration parameters.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"URL of the endpoint to send samples to.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"replicaCount\": {\n \"description\": \"ReplicaCount is the expected size of the VMAlert cluster. The controller will\\neventually make the size of the running cluster equal to the expected\\nsize.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"resources\": {\n \"description\": \"Resources container resource request and limits, https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"revisionHistoryLimitCount\": {\n \"description\": \"The number of old ReplicaSets to retain to allow rollback in deployment or\\nmaximum number of revisions that will be maintained in the StatefulSet's revision history.\\nDefaults to 10.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"rollingUpdate\": {\n \"description\": \"RollingUpdate - overrides deployment update params.\",\n \"properties\": {\n \"maxSurge\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"The maximum number of pods that can be scheduled above the desired number of\\npods.\\nValue can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).\\nThis can not be 0 if MaxUnavailable is 0.\\nAbsolute number is calculated from percentage by rounding up.\\nDefaults to 25%.\\nExample: when this is set to 30%, the new ReplicaSet can be scaled up immediately when\\nthe rolling update starts, such that the total number of old and new pods do not exceed\\n130% of desired pods. Once old pods have been killed,\\nnew ReplicaSet can be scaled up further, ensuring that total number of pods running\\nat any time during the update is at most 130% of desired pods.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxUnavailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"The maximum number of pods that can be unavailable during the update.\\nValue can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).\\nAbsolute number is calculated from percentage by rounding down.\\nThis can not be 0 if MaxSurge is 0.\\nDefaults to 25%.\\nExample: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods\\nimmediately when the rolling update starts. Once new pods are ready, old ReplicaSet\\ncan be scaled down further, followed by scaling up the new ReplicaSet, ensuring\\nthat the total number of pods available at all times during the update is at\\nleast 70% of desired pods.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ruleNamespaceSelector\": {\n \"description\": \"RuleNamespaceSelector to be selected for VMRules discovery.\\nWorks in combination with Selector.\\nIf both nil - behaviour controlled by selectAllByDefault\\nNamespaceSelector nil - only objects at VMAlert namespace.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"rulePath\": {\n \"description\": \"RulePath to the file with alert rules.\\nSupports patterns. Flag can be specified multiple times.\\nExamples:\\n-rule /path/to/file. Path to a single file with alerting rules\\n-rule dir/*.yaml -rule /*.yaml. Relative path to all .yaml files in folder,\\nabsolute path to all .yaml files in root.\\nby default operator adds /etc/vmalert/configs/base/vmalert.yaml\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ruleSelector\": {\n \"description\": \"RuleSelector selector to select which VMRules to mount for loading alerting\\nrules from.\\nWorks in combination with NamespaceSelector.\\nIf both nil - behaviour controlled by selectAllByDefault\\nNamespaceSelector nil - only objects at VMAlert namespace.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName - defines runtime class for kubernetes pod.\\nhttps://kubernetes.io/docs/concepts/containers/runtime-class/\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"SchedulerName - defines kubernetes scheduler name\",\n \"type\": \"string\"\n },\n \"secrets\": {\n \"description\": \"Secrets is a list of Secrets in the same namespace as the VMAlert\\nobject, which shall be mounted into the VMAlert Pods.\\nThe Secrets are mounted into /etc/vm/secrets/\\u003csecret-name\\u003e.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nThis defaults to the default PodSecurityContext.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"selectAllByDefault\": {\n \"description\": \"SelectAllByDefault changes default behavior for empty CRD selectors, such RuleSelector.\\nwith selectAllByDefault: true and empty serviceScrapeSelector and RuleNamespaceSelector\\nOperator selects all exist serviceScrapes\\nwith selectAllByDefault: false - selects nothing\",\n \"type\": \"boolean\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run the\\nVMAlert Pods.\",\n \"type\": \"string\"\n },\n \"serviceScrapeSpec\": {\n \"description\": \"ServiceScrapeSpec that will be added to vmalert VMServiceScrape spec\",\n \"format\": \"textarea\",\n \"required\": [\n \"endpoints\"\n ],\n \"type\": \"string\"\n },\n \"serviceSpec\": {\n \"description\": \"ServiceSpec that will be added to vmalert service spec\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"EmbeddedObjectMetadata defines objectMeta for additional service.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"ServiceSpec describes the attributes that a user creates on a service.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"useAsDefault\": {\n \"description\": \"UseAsDefault applies changes from given service definition to the main object Service\\nChanging from headless service to clusterIP or loadbalancer may break cross-component communication\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe that will be added to CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"TerminationGracePeriodSeconds period for container graceful termination\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints embedded kubernetes pod configuration option,\\ncontrols how pods are spread across your cluster among failure-domains\\nsuch as regions, zones, nodes, and other user-defined topology domains\\nhttps://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"format\": \"textarea\",\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"updateStrategy\": {\n \"description\": \"UpdateStrategy - overrides default update strategy.\",\n \"enum\": [\n \"Recreate\",\n \"RollingUpdate\"\n ],\n \"type\": \"string\"\n },\n \"useStrictSecurity\": {\n \"description\": \"UseStrictSecurity enables strict security mode for component\\nit restricts disk writes access\\nuses non-root user out of the box\\ndrops not needed security permissions\",\n \"type\": \"boolean\"\n },\n \"volumeMounts\": {\n \"description\": \"VolumeMounts allows configuration of additional VolumeMounts on the output Deployment definition.\\nVolumeMounts specified will be appended to other VolumeMounts in the VMAlert container,\\nthat are generated as a result of StorageSpec objects.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"description\": \"Volumes allows configuration of additional volumes on the output Deployment definition.\\nVolumes specified will be appended to other volumes that are generated as a result of\\nStorageSpec objects.\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"datasource\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"VM Alert\",\n \"type\": \"object\"\n}", + "version": "operator.victoriametrics.com/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "VM Alert", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz" + }, + "model": { + "category": { + "name": "Observability and Analysis" + }, + "displayName": "Victoria Metrics K8S Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0_36_80\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003c/svg\u003e" + }, + "model": { + "version": "0.25.8" + }, + "name": "victoria-metrics-k8s-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Monitoring", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"18\" height=\"18\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0_36_80\"\u003e\n\u003crect width=\"32\" height=\"32\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMAlertmanager.json b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMAlertmanager.json new file mode 100644 index 00000000000..eccedeabb88 --- /dev/null +++ b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMAlertmanager.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "VMAlertmanager", + "schema": "{\n \"description\": \"VMAlertmanager represents Victoria-Metrics deployment for Alertmanager.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"Specification of the desired behavior of the VMAlertmanager cluster. More info:\\nhttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\",\n \"properties\": {\n \"additionalPeers\": {\n \"description\": \"AdditionalPeers allows injecting a set of additional Alertmanagers to peer with to form a highly available cluster.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"affinity\": {\n \"description\": \"Affinity If specified, the pod's scheduling constraints.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"claimTemplates\": {\n \"description\": \"ClaimTemplates allows adding additional VolumeClaimTemplates for StatefulSet\",\n \"items\": {\n \"description\": \"PersistentVolumeClaim is a user's request for and claim to a persistent volume\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"APIVersion defines the versioned schema of this representation of an object.\\nServers should convert recognized schemas to the latest internal value, and\\nmay reject unrecognized values.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is a string value representing the REST resource this object represents.\\nServers may infer this from the endpoint the client submits requests to.\\nCannot be updated.\\nIn CamelCase.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"Standard object's metadata.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"spec\": {\n \"description\": \"spec defines the desired characteristics of a volume requested by a pod author.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"status\": {\n \"description\": \"status represents the current information/status of a persistent volume claim.\\nRead-only.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the actual access modes the volume backing the PVC has.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"allocatedResourceStatuses\": {\n \"additionalProperties\": {\n \"description\": \"When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource\\nthat it does not recognizes, then it should ignore that update and let other controllers\\nhandle it.\",\n \"type\": \"string\"\n },\n \"description\": \"allocatedResourceStatuses stores status of resource being resized for the given PVC.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\n\\nClaimResourceStatus can be in any of following states:\\n\\t- ControllerResizeInProgress:\\n\\t\\tState set when resize controller starts resizing the volume in control-plane.\\n\\t- ControllerResizeFailed:\\n\\t\\tState set when resize has failed in resize controller with a terminal error.\\n\\t- NodeResizePending:\\n\\t\\tState set when resize controller has finished resizing the volume but further resizing of\\n\\t\\tvolume is needed on the node.\\n\\t- NodeResizeInProgress:\\n\\t\\tState set when kubelet starts resizing the volume.\\n\\t- NodeResizeFailed:\\n\\t\\tState set when resizing has failed in kubelet with a terminal error. Transient errors don't set\\n\\t\\tNodeResizeFailed.\\nFor example: if expanding a PVC for more capacity - this field can be one of the following states:\\n\\t- pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeInProgress\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeFailed\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizePending\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeInProgress\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeFailed\\\"\\nWhen this field is not set, it means that no resize operation is in progress for the given PVC.\\n\\n\\nA controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\\n\\n\\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"granular\"\n },\n \"allocatedResources\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"allocatedResources tracks the resources allocated to a PVC including its capacity.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\n\\nCapacity reported here may be larger than the actual capacity when a volume expansion operation\\nis requested.\\nFor storage quota, the larger value from allocatedResources and PVC.spec.resources is used.\\nIf allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.\\nIf a volume expansion capacity request is lowered, allocatedResources is only\\nlowered if there are no expansion operations in progress and if the actual volume capacity\\nis equal or lower than the requested capacity.\\n\\n\\nA controller that receives PVC update with previously unknown resourceName\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\\n\\n\\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\"\n },\n \"capacity\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"capacity represents the actual resources of the underlying volume.\",\n \"type\": \"object\"\n },\n \"conditions\": {\n \"description\": \"conditions is the current Condition of persistent volume claim. If underlying persistent volume is being\\nresized then the Condition will be set to 'Resizing'.\",\n \"items\": {\n \"description\": \"PersistentVolumeClaimCondition contains details about state of pvc\",\n \"properties\": {\n \"lastProbeTime\": {\n \"description\": \"lastProbeTime is the time we probed the condition.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"lastTransitionTime\": {\n \"description\": \"lastTransitionTime is the time the condition transitioned from one status to another.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"message is the human-readable message indicating details about last transition.\",\n \"type\": \"string\"\n },\n \"reason\": {\n \"description\": \"reason is a unique, this should be a short, machine understandable string that gives the reason\\nfor condition's last transition. If it reports \\\"Resizing\\\" that means the underlying\\npersistent volume is being resized.\",\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"type\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"currentVolumeAttributesClassName\": {\n \"description\": \"currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.\\nWhen unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim\\nThis is an alpha field and requires enabling VolumeAttributesClass feature.\",\n \"type\": \"string\"\n },\n \"modifyVolumeStatus\": {\n \"description\": \"ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.\\nWhen this is unset, there is no ModifyVolume operation being attempted.\\nThis is an alpha field and requires enabling VolumeAttributesClass feature.\",\n \"properties\": {\n \"status\": {\n \"description\": \"status is the status of the ControllerModifyVolume operation. It can be in any of following states:\\n - Pending\\n Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as\\n the specified VolumeAttributesClass not existing.\\n - InProgress\\n InProgress indicates that the volume is being modified.\\n - Infeasible\\n Infeasible indicates that the request has been rejected as invalid by the CSI driver. To\\n\\t resolve the error, a valid VolumeAttributesClass needs to be specified.\\nNote: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.\",\n \"type\": \"string\"\n },\n \"targetVolumeAttributesClassName\": {\n \"description\": \"targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"phase\": {\n \"description\": \"phase represents the current phase of PersistentVolumeClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"clusterAdvertiseAddress\": {\n \"description\": \"ClusterAdvertiseAddress is the explicit address to advertise in cluster.\\nNeeds to be provided for non RFC1918 [1] (public) addresses.\\n[1] RFC1918: https://tools.ietf.org/html/rfc1918\",\n \"type\": \"string\"\n },\n \"configMaps\": {\n \"description\": \"ConfigMaps is a list of ConfigMaps in the same namespace as the VMAlertmanager\\nobject, which shall be mounted into the VMAlertmanager Pods.\\nThe ConfigMaps are mounted into /etc/vm/configs/\\u003cconfigmap-name\\u003e.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"configNamespaceSelector\": {\n \"description\": \" ConfigNamespaceSelector defines namespace selector for VMAlertmanagerConfig.\\nWorks in combination with Selector.\\nNamespaceSelector nil - only objects at VMAlertmanager namespace.\\nSelector nil - only objects at NamespaceSelector namespaces.\\nIf both nil - behaviour controlled by selectAllByDefault\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"configRawYaml\": {\n \"description\": \"ConfigRawYaml - raw configuration for alertmanager,\\nit helps it to start without secret.\\npriority -\\u003e hardcoded ConfigRaw -\\u003e ConfigRaw, provided by user -\\u003e ConfigSecret.\",\n \"type\": \"string\"\n },\n \"configReloaderExtraArgs\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"ConfigReloaderExtraArgs that will be passed to VMAuths config-reloader container\\nfor example resyncInterval: \\\"30s\\\"\",\n \"type\": \"object\"\n },\n \"configSecret\": {\n \"description\": \"ConfigSecret is the name of a Kubernetes Secret in the same namespace as the\\nVMAlertmanager object, which contains configuration for this VMAlertmanager,\\nconfiguration must be inside secret key: alertmanager.yaml.\\nIt must be created by user.\\ninstance. Defaults to 'vmalertmanager-\\u003calertmanager-name\\u003e'\\nThe secret is mounted into /etc/alertmanager/config.\",\n \"type\": \"string\"\n },\n \"configSelector\": {\n \"description\": \"ConfigSelector defines selector for VMAlertmanagerConfig, result config will be merged with with Raw or Secret config.\\nWorks in combination with NamespaceSelector.\\nNamespaceSelector nil - only objects at VMAlertmanager namespace.\\nSelector nil - only objects at NamespaceSelector namespaces.\\nIf both nil - behaviour controlled by selectAllByDefault\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"containers\": {\n \"description\": \"Containers allows injecting additional containers or patching existing containers.\\nThis is meant to allow adding an authentication proxy to an VMAlertmanager pod.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"disableNamespaceMatcher\": {\n \"description\": \"DisableNamespaceMatcher disables namespace label matcher for VMAlertmanagerConfig\\nIt may be useful if alert doesn't have namespace label for some reason\",\n \"type\": \"boolean\"\n },\n \"disableRouteContinueEnforce\": {\n \"description\": \"DisableRouteContinueEnforce cancel the behavior for VMAlertmanagerConfig that always enforce first-level route continue to true\",\n \"type\": \"boolean\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"items\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"DNSPolicy sets DNS policy for the pod\",\n \"type\": \"string\"\n },\n \"externalURL\": {\n \"description\": \"ExternalURL the VMAlertmanager instances will be available under. This is\\nnecessary to generate correct URLs. This is necessary if VMAlertmanager is not\\nserved from root of a DNS name.\",\n \"type\": \"string\"\n },\n \"extraArgs\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"ExtraArgs that will be passed to VMAlertmanager pod\\nfor example log.level: debug\",\n \"type\": \"object\"\n },\n \"extraEnvs\": {\n \"description\": \"ExtraEnvs that will be added to VMAlertmanager pod\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"format\": \"textarea\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"gossipConfig\": {\n \"description\": \"GossipConfig defines gossip TLS configuration for Alertmanager cluster\",\n \"properties\": {\n \"tls_client_config\": {\n \"description\": \"TLSClientConfig defines client TLS configuration for alertmanager\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"CAFile defines path to the pre-mounted file with CA\\nmutually exclusive with CASecretRef\",\n \"type\": \"string\"\n },\n \"ca_secret_ref\": {\n \"description\": \"CA defines reference for secret with CA content under given key\\nmutually exclusive with CAFile\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"cert_file\": {\n \"description\": \"CertFile defines path to the pre-mounted file with certificate\\nmutually exclusive with CertSecretRef\",\n \"type\": \"string\"\n },\n \"cert_secret_ref\": {\n \"description\": \"SecretKeySelector selects a key of a Secret.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"insecure_skip_verify\": {\n \"description\": \"Cert defines reference for secret with CA content under given key\\nmutually exclusive with CertFile\",\n \"type\": \"boolean\"\n },\n \"key_file\": {\n \"description\": \"KeyFile defines path to the pre-mounted file with certificate key\\nmutually exclusive with KeySecretRef\",\n \"type\": \"string\"\n },\n \"key_secret_ref\": {\n \"description\": \"Key defines reference for secret with certificate key content under given key\\nmutually exclusive with KeyFile\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"server_name\": {\n \"description\": \"ServerName indicates a name of a server\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tls_server_config\": {\n \"description\": \"TLSServerConfig defines server TLS configuration for alertmanager\",\n \"properties\": {\n \"cert_file\": {\n \"description\": \"CertFile defines path to the pre-mounted file with certificate\\nmutually exclusive with CertSecretRef\",\n \"type\": \"string\"\n },\n \"cert_secret_ref\": {\n \"description\": \"SecretKeySelector selects a key of a Secret.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"cipher_suites\": {\n \"description\": \"CipherSuites defines list of supported cipher suites for TLS versions up to TLS 1.2\\nhttps://golang.org/pkg/crypto/tls/#pkg-constants\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"client_auth_type\": {\n \"description\": \"Cert defines reference for secret with CA content under given key\\nmutually exclusive with CertFile\\nClientAuthType defines server policy for client authentication\\nIf you want to enable client authentication (aka mTLS), you need to use RequireAndVerifyClientCert\\nNote, mTLS is supported only at enterprise version of VictoriaMetrics components\",\n \"enum\": [\n \"NoClientCert\",\n \"RequireAndVerifyClientCert\"\n ],\n \"type\": \"string\"\n },\n \"client_ca_file\": {\n \"description\": \"ClientCAFile defines path to the pre-mounted file with CA\\nmutually exclusive with ClientCASecretRef\",\n \"type\": \"string\"\n },\n \"client_ca_secret_ref\": {\n \"description\": \"ClientCASecretRef defines reference for secret with CA content under given key\\nmutually exclusive with ClientCAFile\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"curve_preferences\": {\n \"description\": \"CurvePreferences defines elliptic curves that will be used in an ECDHE handshake, in preference order.\\nhttps://golang.org/pkg/crypto/tls/#CurveID\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"key_file\": {\n \"description\": \"KeyFile defines path to the pre-mounted file with certificate key\\nmutually exclusive with KeySecretRef\",\n \"type\": \"string\"\n },\n \"key_secret_ref\": {\n \"description\": \"Key defines reference for secret with certificate key content under given key\\nmutually exclusive with KeyFile\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"max_version\": {\n \"description\": \"MaxVersion maximum TLS version that is acceptable.\",\n \"enum\": [\n \"TLS10\",\n \"TLS11\",\n \"TLS12\",\n \"TLS13\"\n ],\n \"type\": \"string\"\n },\n \"min_version\": {\n \"description\": \"MinVersion minimum TLS version that is acceptable.\",\n \"enum\": [\n \"TLS10\",\n \"TLS11\",\n \"TLS12\",\n \"TLS13\"\n ],\n \"type\": \"string\"\n },\n \"prefer_server_cipher_suites\": {\n \"description\": \"PreferServerCipherSuites controls whether the server selects the\\nclient's most preferred ciphersuite\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"hostNetwork\": {\n \"description\": \"HostNetwork controls whether the pod may use the node network namespace\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image - docker image settings for VMAlertmanager\\nif no specified operator uses default config version\",\n \"properties\": {\n \"pullPolicy\": {\n \"description\": \"PullPolicy describes how to pull docker image\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"Repository contains name of docker image + it's repository if needed\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"description\": \"Tag contains desired docker image version\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets An optional list of references to secrets in the same namespace\\nto use for pulling images from registries\\nsee https://kubernetes.io/docs/concepts/containers/images/#referring-to-an-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"initContainers\": {\n \"description\": \"InitContainers allows adding initContainers to the pod definition. Those can be used to e.g.\\nfetch secrets for injection into the VMAlertmanager configuration from external sources. Any\\nerrors 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/\\nUsing initContainers for any use case other then secret fetching is entirely outside the scope\\nof what the maintainers will support and by doing so, you accept that this behaviour may break\\nat any time without notice.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"listenLocal\": {\n \"description\": \"ListenLocal makes the VMAlertmanager server listen on loopback, so that it\\ndoes not bind against the Pod IP. Note this is only for the VMAlertmanager\\nUI, not the gossip communication.\",\n \"type\": \"boolean\"\n },\n \"livenessProbe\": {\n \"description\": \"LivenessProbe that will be added CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"logFormat\": {\n \"description\": \"LogFormat for VMAlertmanager to be configured with.\",\n \"type\": \"string\"\n },\n \"logLevel\": {\n \"description\": \"Log level for VMAlertmanager to be configured with.\",\n \"type\": \"string\"\n },\n \"minReadySeconds\": {\n \"description\": \"MinReadySeconds defines a minim number os seconds to wait before starting update next pod\\nif previous in healthy state\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector Define which Nodes the Pods are scheduled on.\",\n \"type\": \"object\"\n },\n \"paused\": {\n \"description\": \"Paused If set to true all actions on the underlying managed objects are not\\ngoing to be performed, except for delete actions.\",\n \"type\": \"boolean\"\n },\n \"podDisruptionBudget\": {\n \"description\": \"PodDisruptionBudget created by operator\",\n \"properties\": {\n \"maxUnavailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"An eviction is allowed if at most \\\"maxUnavailable\\\" pods selected by\\n\\\"selector\\\" are unavailable after the eviction, i.e. even in absence of\\nthe evicted pod. For example, one can prevent all voluntary evictions\\nby specifying 0. This is a mutually exclusive setting with \\\"minAvailable\\\".\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minAvailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"An eviction is allowed if at least \\\"minAvailable\\\" pods selected by\\n\\\"selector\\\" will still be available after the eviction, i.e. even in the\\nabsence of the evicted pod. So for example you can prevent all voluntary\\nevictions by specifying \\\"100%\\\".\",\n \"x-kubernetes-int-or-string\": true\n },\n \"selectorLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"replaces default labels selector generated by operator\\nit's useful when you need to create custom budget\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"podMetadata\": {\n \"description\": \"PodMetadata configures Labels and Annotations which are propagated to the alertmanager pods.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"port\": {\n \"description\": \"Port for listen\",\n \"type\": \"string\"\n },\n \"portName\": {\n \"description\": \"PortName used for the pods and governing service.\\nThis defaults to web\",\n \"type\": \"string\"\n },\n \"priorityClassName\": {\n \"description\": \"PriorityClassName class assigned to the Pods\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"ReadinessGates defines pod readiness gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readinessProbe\": {\n \"description\": \"ReadinessProbe that will be added CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replicaCount\": {\n \"description\": \"ReplicaCount Size is the expected size of the alertmanager cluster. The controller will\\neventually make the size of the running cluster equal to the expected\",\n \"format\": \"int32\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"resources\": {\n \"description\": \"Resources container resource request and limits,\\nhttps://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"retention\": {\n \"description\": \"Retention Time duration VMAlertmanager shall retain data for. Default is '120h',\\nand must match the regular expression `[0-9]+(ms|s|m|h)` (milliseconds seconds minutes hours).\",\n \"pattern\": \"[0-9]+(ms|s|m|h)\",\n \"type\": \"string\"\n },\n \"revisionHistoryLimitCount\": {\n \"description\": \"The number of old ReplicaSets to retain to allow rollback in deployment or\\nmaximum number of revisions that will be maintained in the StatefulSet's revision history.\\nDefaults to 10.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"rollingUpdateStrategy\": {\n \"description\": \"RollingUpdateStrategy defines strategy for application updates\\nDefault is OnDelete, in this case operator handles update process\\nCan be changed for RollingUpdate\",\n \"type\": \"string\"\n },\n \"routePrefix\": {\n \"description\": \"RoutePrefix VMAlertmanager registers HTTP handlers for. This is useful,\\nif using ExternalURL and a proxy is rewriting HTTP routes of a request,\\nand the actual ExternalURL is still true, but the server serves requests\\nunder a different route prefix. For example for use with `kubectl proxy`.\",\n \"type\": \"string\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName - defines runtime class for kubernetes pod.\\nhttps://kubernetes.io/docs/concepts/containers/runtime-class/\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"SchedulerName - defines kubernetes scheduler name\",\n \"type\": \"string\"\n },\n \"secrets\": {\n \"description\": \"Secrets is a list of Secrets in the same namespace as the VMAlertmanager\\nobject, which shall be mounted into the VMAlertmanager Pods.\\nThe Secrets are mounted into /etc/vm/secrets/\\u003csecret-name\\u003e\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nThis defaults to the default PodSecurityContext.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"selectAllByDefault\": {\n \"description\": \"SelectAllByDefault changes default behavior for empty CRD selectors, such ConfigSelector.\\nwith selectAllByDefault: true and undefined ConfigSelector and ConfigNamespaceSelector\\nOperator selects all exist alertManagerConfigs\\nwith selectAllByDefault: false - selects nothing\",\n \"type\": \"boolean\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use\",\n \"type\": \"string\"\n },\n \"serviceScrapeSpec\": {\n \"description\": \"ServiceScrapeSpec that will be added to vmalertmanager VMServiceScrape spec\",\n \"format\": \"textarea\",\n \"required\": [\n \"endpoints\"\n ],\n \"type\": \"string\"\n },\n \"serviceSpec\": {\n \"description\": \"ServiceSpec that will be added to vmalertmanager service spec\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"EmbeddedObjectMetadata defines objectMeta for additional service.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"ServiceSpec describes the attributes that a user creates on a service.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"useAsDefault\": {\n \"description\": \"UseAsDefault applies changes from given service definition to the main object Service\\nChanging from headless service to clusterIP or loadbalancer may break cross-component communication\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe that will be added to CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"storage\": {\n \"description\": \"Storage is the definition of how storage will be used by the VMAlertmanager\\ninstances.\",\n \"properties\": {\n \"disableMountSubPath\": {\n \"description\": \"Deprecated: subPath usage will be disabled by default in a future release, this option will become unnecessary.\\nDisableMountSubPath allows to remove any subPath usage in volume mounts.\",\n \"type\": \"boolean\"\n },\n \"emptyDir\": {\n \"description\": \"EmptyDirVolumeSource to be used by the Prometheus StatefulSets. If specified, used in place of any volumeClaimTemplate. More\\ninfo: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"A PVC spec to be used by the VMAlertManager StatefulSets.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"APIVersion defines the versioned schema of this representation of an object.\\nServers should convert recognized schemas to the latest internal value, and\\nmay reject unrecognized values.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is a string value representing the REST resource this object represents.\\nServers may infer this from the endpoint the client submits requests to.\\nCannot be updated.\\nIn CamelCase.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"EmbeddedMetadata contains metadata relevant to an EmbeddedResource.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Spec defines the desired characteristics of a volume requested by a pod author.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"status\": {\n \"description\": \"Status represents the current information/status of a persistent volume claim.\\nRead-only.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the actual access modes the volume backing the PVC has.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"allocatedResourceStatuses\": {\n \"additionalProperties\": {\n \"description\": \"When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource\\nthat it does not recognizes, then it should ignore that update and let other controllers\\nhandle it.\",\n \"type\": \"string\"\n },\n \"description\": \"allocatedResourceStatuses stores status of resource being resized for the given PVC.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\n\\nClaimResourceStatus can be in any of following states:\\n\\t- ControllerResizeInProgress:\\n\\t\\tState set when resize controller starts resizing the volume in control-plane.\\n\\t- ControllerResizeFailed:\\n\\t\\tState set when resize has failed in resize controller with a terminal error.\\n\\t- NodeResizePending:\\n\\t\\tState set when resize controller has finished resizing the volume but further resizing of\\n\\t\\tvolume is needed on the node.\\n\\t- NodeResizeInProgress:\\n\\t\\tState set when kubelet starts resizing the volume.\\n\\t- NodeResizeFailed:\\n\\t\\tState set when resizing has failed in kubelet with a terminal error. Transient errors don't set\\n\\t\\tNodeResizeFailed.\\nFor example: if expanding a PVC for more capacity - this field can be one of the following states:\\n\\t- pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeInProgress\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeFailed\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizePending\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeInProgress\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeFailed\\\"\\nWhen this field is not set, it means that no resize operation is in progress for the given PVC.\\n\\n\\nA controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\\n\\n\\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"granular\"\n },\n \"allocatedResources\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"allocatedResources tracks the resources allocated to a PVC including its capacity.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\n\\nCapacity reported here may be larger than the actual capacity when a volume expansion operation\\nis requested.\\nFor storage quota, the larger value from allocatedResources and PVC.spec.resources is used.\\nIf allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.\\nIf a volume expansion capacity request is lowered, allocatedResources is only\\nlowered if there are no expansion operations in progress and if the actual volume capacity\\nis equal or lower than the requested capacity.\\n\\n\\nA controller that receives PVC update with previously unknown resourceName\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\\n\\n\\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\"\n },\n \"capacity\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"capacity represents the actual resources of the underlying volume.\",\n \"type\": \"object\"\n },\n \"conditions\": {\n \"description\": \"conditions is the current Condition of persistent volume claim. If underlying persistent volume is being\\nresized then the Condition will be set to 'Resizing'.\",\n \"items\": {\n \"description\": \"PersistentVolumeClaimCondition contains details about state of pvc\",\n \"properties\": {\n \"lastProbeTime\": {\n \"description\": \"lastProbeTime is the time we probed the condition.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"lastTransitionTime\": {\n \"description\": \"lastTransitionTime is the time the condition transitioned from one status to another.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"message is the human-readable message indicating details about last transition.\",\n \"type\": \"string\"\n },\n \"reason\": {\n \"description\": \"reason is a unique, this should be a short, machine understandable string that gives the reason\\nfor condition's last transition. If it reports \\\"Resizing\\\" that means the underlying\\npersistent volume is being resized.\",\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"type\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"currentVolumeAttributesClassName\": {\n \"description\": \"currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.\\nWhen unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim\\nThis is an alpha field and requires enabling VolumeAttributesClass feature.\",\n \"type\": \"string\"\n },\n \"modifyVolumeStatus\": {\n \"description\": \"ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.\\nWhen this is unset, there is no ModifyVolume operation being attempted.\\nThis is an alpha field and requires enabling VolumeAttributesClass feature.\",\n \"properties\": {\n \"status\": {\n \"description\": \"status is the status of the ControllerModifyVolume operation. It can be in any of following states:\\n - Pending\\n Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as\\n the specified VolumeAttributesClass not existing.\\n - InProgress\\n InProgress indicates that the volume is being modified.\\n - Infeasible\\n Infeasible indicates that the request has been rejected as invalid by the CSI driver. To\\n\\t resolve the error, a valid VolumeAttributesClass needs to be specified.\\nNote: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.\",\n \"type\": \"string\"\n },\n \"targetVolumeAttributesClassName\": {\n \"description\": \"targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"phase\": {\n \"description\": \"phase represents the current phase of PersistentVolumeClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"templates\": {\n \"description\": \"Templates is a list of ConfigMap key references for ConfigMaps in the same namespace as the VMAlertmanager\\nobject, which shall be mounted into the VMAlertmanager Pods.\\nThe Templates are mounted into /etc/vm/templates/\\u003cconfigmap-name\\u003e/\\u003cconfigmap-key\\u003e.\",\n \"items\": {\n \"description\": \"ConfigMapKeyReference refers to a key in a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The ConfigMap key to refer to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"TerminationGracePeriodSeconds period for container graceful termination\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints embedded kubernetes pod configuration option,\\ncontrols how pods are spread across your cluster among failure-domains\\nsuch as regions, zones, nodes, and other user-defined topology domains\\nhttps://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"format\": \"textarea\",\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"useStrictSecurity\": {\n \"description\": \"UseStrictSecurity enables strict security mode for component\\nit restricts disk writes access\\nuses non-root user out of the box\\ndrops not needed security permissions\",\n \"type\": \"boolean\"\n },\n \"volumeMounts\": {\n \"description\": \"VolumeMounts allows configuration of additional VolumeMounts on the output StatefulSet definition.\\nVolumeMounts specified will be appended to other VolumeMounts in the alertmanager container,\\nthat are generated as a result of StorageSpec objects.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"description\": \"Volumes allows configuration of additional volumes on the output StatefulSet definition.\\nVolumes specified will be appended to other volumes that are generated as a result of\\nStorageSpec objects.\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"webConfig\": {\n \"description\": \"WebConfig defines configuration for webserver\\nhttps://github.com/prometheus/alertmanager/blob/main/docs/https.md\",\n \"properties\": {\n \"basic_auth_users\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"BasicAuthUsers Usernames and hashed passwords that have full access to the web server\\nPasswords must be hashed with bcrypt\",\n \"type\": \"object\"\n },\n \"http_server_config\": {\n \"description\": \"HTTPServerConfig defines http server configuration for alertmanager web server\",\n \"properties\": {\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Headers defines list of headers that can be added to HTTP responses.\",\n \"type\": \"object\"\n },\n \"http2\": {\n \"description\": \"HTTP2 enables HTTP/2 support. Note that HTTP/2 is only supported with TLS.\\nThis can not be changed on the fly.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"tls_server_config\": {\n \"description\": \"TLSServerConfig defines server TLS configuration for alertmanager\",\n \"properties\": {\n \"cert_file\": {\n \"description\": \"CertFile defines path to the pre-mounted file with certificate\\nmutually exclusive with CertSecretRef\",\n \"type\": \"string\"\n },\n \"cert_secret_ref\": {\n \"description\": \"SecretKeySelector selects a key of a Secret.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"cipher_suites\": {\n \"description\": \"CipherSuites defines list of supported cipher suites for TLS versions up to TLS 1.2\\nhttps://golang.org/pkg/crypto/tls/#pkg-constants\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"client_auth_type\": {\n \"description\": \"Cert defines reference for secret with CA content under given key\\nmutually exclusive with CertFile\\nClientAuthType defines server policy for client authentication\\nIf you want to enable client authentication (aka mTLS), you need to use RequireAndVerifyClientCert\\nNote, mTLS is supported only at enterprise version of VictoriaMetrics components\",\n \"enum\": [\n \"NoClientCert\",\n \"RequireAndVerifyClientCert\"\n ],\n \"type\": \"string\"\n },\n \"client_ca_file\": {\n \"description\": \"ClientCAFile defines path to the pre-mounted file with CA\\nmutually exclusive with ClientCASecretRef\",\n \"type\": \"string\"\n },\n \"client_ca_secret_ref\": {\n \"description\": \"ClientCASecretRef defines reference for secret with CA content under given key\\nmutually exclusive with ClientCAFile\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"curve_preferences\": {\n \"description\": \"CurvePreferences defines elliptic curves that will be used in an ECDHE handshake, in preference order.\\nhttps://golang.org/pkg/crypto/tls/#CurveID\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"key_file\": {\n \"description\": \"KeyFile defines path to the pre-mounted file with certificate key\\nmutually exclusive with KeySecretRef\",\n \"type\": \"string\"\n },\n \"key_secret_ref\": {\n \"description\": \"Key defines reference for secret with certificate key content under given key\\nmutually exclusive with KeyFile\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"max_version\": {\n \"description\": \"MaxVersion maximum TLS version that is acceptable.\",\n \"enum\": [\n \"TLS10\",\n \"TLS11\",\n \"TLS12\",\n \"TLS13\"\n ],\n \"type\": \"string\"\n },\n \"min_version\": {\n \"description\": \"MinVersion minimum TLS version that is acceptable.\",\n \"enum\": [\n \"TLS10\",\n \"TLS11\",\n \"TLS12\",\n \"TLS13\"\n ],\n \"type\": \"string\"\n },\n \"prefer_server_cipher_suites\": {\n \"description\": \"PreferServerCipherSuites controls whether the server selects the\\nclient's most preferred ciphersuite\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"title\": \"VM Alertmanager\",\n \"type\": \"object\"\n}", + "version": "operator.victoriametrics.com/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "VM Alertmanager", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz" + }, + "model": { + "category": { + "name": "Observability and Analysis" + }, + "displayName": "Victoria Metrics K8S Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0_36_80\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003c/svg\u003e" + }, + "model": { + "version": "0.25.8" + }, + "name": "victoria-metrics-k8s-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Monitoring", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"18\" height=\"18\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0_36_80\"\u003e\n\u003crect width=\"32\" height=\"32\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMAlertmanagerConfig.json b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMAlertmanagerConfig.json new file mode 100644 index 00000000000..66ab0fa6fe0 --- /dev/null +++ b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMAlertmanagerConfig.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "VMAlertmanagerConfig", + "schema": "{\n \"description\": \"VMAlertmanagerConfig is the Schema for the vmalertmanagerconfigs API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"VMAlertmanagerConfigSpec defines configuration for VMAlertmanagerConfig\\nit must reference only locally defined objects\",\n \"properties\": {\n \"inhibit_rules\": {\n \"description\": \"InhibitRules will only apply for alerts matching\\nthe resource's namespace.\",\n \"items\": {\n \"description\": \"InhibitRule defines an inhibition rule that allows to mute alerts when other\\nalerts are already firing.\\nNote, it doesn't support deprecated alertmanager config options.\\nSee https://prometheus.io/docs/alerting/latest/configuration/#inhibit_rule\",\n \"properties\": {\n \"equal\": {\n \"description\": \"Labels that must have an equal value in the source and target alert for\\nthe inhibition to take effect.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_matchers\": {\n \"description\": \"SourceMatchers defines a list of matchers for which one or more alerts have\\nto exist for the inhibition to take effect.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"target_matchers\": {\n \"description\": \"TargetMatchers defines a list of matchers that have to be fulfilled by the target\\nalerts to be muted.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"receivers\": {\n \"description\": \"Receivers defines alert receivers\",\n \"items\": {\n \"description\": \"Receiver defines one or more notification integrations.\",\n \"properties\": {\n \"discord_configs\": {\n \"items\": {\n \"properties\": {\n \"http_config\": {\n \"description\": \"HTTP client configuration.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization header configuration for the client.\\nThis is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Reference to the secret with value for authorization\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"credentialsFile\": {\n \"description\": \"File with value for authorization\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of authorization, default to bearer\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basic_auth\": {\n \"description\": \"BasicAuth for the client.\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearer_token_file\": {\n \"description\": \"BearerTokenFile defines filename for bearer token, it must be mounted to pod.\",\n \"type\": \"string\"\n },\n \"bearer_token_secret\": {\n \"description\": \"The secret's key that contains the bearer token\\nIt must be at them same namespace as CRD\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 client credentials used to fetch a token for the targets.\",\n \"properties\": {\n \"client_id\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"client_secret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"client_secret_file\": {\n \"description\": \"ClientSecretFile defines path for client secret file.\",\n \"type\": \"string\"\n },\n \"endpoint_params\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"token_url\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"client_id\",\n \"token_url\"\n ],\n \"type\": \"object\"\n },\n \"proxyURL\": {\n \"description\": \"Optional proxy URL.\",\n \"type\": \"string\"\n },\n \"tls_config\": {\n \"description\": \"TLS configuration for the client.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"message\": {\n \"description\": \"The message body template\",\n \"type\": \"string\"\n },\n \"send_resolved\": {\n \"description\": \"SendResolved controls notify about resolved alerts.\",\n \"type\": \"boolean\"\n },\n \"title\": {\n \"description\": \"The message title template\",\n \"type\": \"string\"\n },\n \"webhook_url\": {\n \"description\": \"The discord webhook URL\\none of `urlSecret` and `url` must be defined.\",\n \"type\": \"string\"\n },\n \"webhook_url_secret\": {\n \"description\": \"URLSecret defines secret name and key at the CRD namespace.\\nIt must contain the webhook URL.\\none of `urlSecret` and `url` must be defined.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"email_configs\": {\n \"description\": \"EmailConfigs defines email notification configurations.\",\n \"items\": {\n \"description\": \"EmailConfig configures notifications via Email.\",\n \"properties\": {\n \"auth_identity\": {\n \"description\": \"The identity to use for authentication.\",\n \"type\": \"string\"\n },\n \"auth_password\": {\n \"description\": \"AuthPassword defines secret name and key at CRD namespace.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"auth_secret\": {\n \"description\": \"AuthSecret defines secrent name and key at CRD namespace.\\nIt must contain the CRAM-MD5 secret.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"auth_username\": {\n \"description\": \"The username to use for authentication.\",\n \"type\": \"string\"\n },\n \"from\": {\n \"description\": \"The sender address.\\nfallback to global setting if empty\",\n \"type\": \"string\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Further headers email header key/value pairs. Overrides any headers\\npreviously set by the notification implementation.\",\n \"type\": \"object\"\n },\n \"hello\": {\n \"description\": \"The hostname to identify to the SMTP server.\",\n \"type\": \"string\"\n },\n \"html\": {\n \"description\": \"The HTML body of the email notification.\",\n \"type\": \"string\"\n },\n \"require_tls\": {\n \"description\": \"The SMTP TLS requirement.\\nNote that Go does not support unencrypted connections to remote SMTP endpoints.\",\n \"type\": \"boolean\"\n },\n \"send_resolved\": {\n \"description\": \"SendResolved controls notify about resolved alerts.\",\n \"type\": \"boolean\"\n },\n \"smarthost\": {\n \"description\": \"The SMTP host through which emails are sent.\\nfallback to global setting if empty\",\n \"type\": \"string\"\n },\n \"text\": {\n \"description\": \"The text body of the email notification.\",\n \"type\": \"string\"\n },\n \"tls_config\": {\n \"description\": \"TLS configuration\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"to\": {\n \"description\": \"The email address to send notifications to.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"msteams_configs\": {\n \"items\": {\n \"properties\": {\n \"http_config\": {\n \"description\": \"HTTP client configuration.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization header configuration for the client.\\nThis is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Reference to the secret with value for authorization\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"credentialsFile\": {\n \"description\": \"File with value for authorization\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of authorization, default to bearer\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basic_auth\": {\n \"description\": \"BasicAuth for the client.\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearer_token_file\": {\n \"description\": \"BearerTokenFile defines filename for bearer token, it must be mounted to pod.\",\n \"type\": \"string\"\n },\n \"bearer_token_secret\": {\n \"description\": \"The secret's key that contains the bearer token\\nIt must be at them same namespace as CRD\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 client credentials used to fetch a token for the targets.\",\n \"properties\": {\n \"client_id\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"client_secret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"client_secret_file\": {\n \"description\": \"ClientSecretFile defines path for client secret file.\",\n \"type\": \"string\"\n },\n \"endpoint_params\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"token_url\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"client_id\",\n \"token_url\"\n ],\n \"type\": \"object\"\n },\n \"proxyURL\": {\n \"description\": \"Optional proxy URL.\",\n \"type\": \"string\"\n },\n \"tls_config\": {\n \"description\": \"TLS configuration for the client.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"send_resolved\": {\n \"description\": \"SendResolved controls notify about resolved alerts.\",\n \"type\": \"boolean\"\n },\n \"text\": {\n \"description\": \"The text body of the teams notification.\",\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"The title of the teams notification.\",\n \"type\": \"string\"\n },\n \"webhook_url\": {\n \"description\": \"The incoming webhook URL\\none of `urlSecret` and `url` must be defined.\",\n \"type\": \"string\"\n },\n \"webhook_url_secret\": {\n \"description\": \"URLSecret defines secret name and key at the CRD namespace.\\nIt must contain the webhook URL.\\none of `urlSecret` and `url` must be defined.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the receiver. Must be unique across all items from the list.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"opsgenie_configs\": {\n \"description\": \"OpsGenieConfigs defines ops genie notification configurations.\",\n \"items\": {\n \"description\": \"OpsGenieConfig configures notifications via OpsGenie.\\nSee https://prometheus.io/docs/alerting/latest/configuration/#opsgenie_config\",\n \"properties\": {\n \"actions\": {\n \"description\": \"Comma separated list of actions that will be available for the alert.\",\n \"type\": \"string\"\n },\n \"apiURL\": {\n \"description\": \"The URL to send OpsGenie API requests to.\",\n \"type\": \"string\"\n },\n \"api_key\": {\n \"description\": \"The secret's key that contains the OpsGenie API key.\\nIt must be at them same namespace as CRD\\nfallback to global setting if empty\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"description\": {\n \"description\": \"Description of the incident.\",\n \"type\": \"string\"\n },\n \"details\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"A set of arbitrary key/value pairs that provide further detail about the incident.\",\n \"type\": \"object\"\n },\n \"entity\": {\n \"description\": \"Optional field that can be used to specify which domain alert is related to.\",\n \"type\": \"string\"\n },\n \"http_config\": {\n \"description\": \"HTTP client configuration.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"Alert text limited to 130 characters.\",\n \"type\": \"string\"\n },\n \"note\": {\n \"description\": \"Additional alert note.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"Priority level of alert. Possible values are P1, P2, P3, P4, and P5.\",\n \"type\": \"string\"\n },\n \"responders\": {\n \"description\": \"List of responders responsible for notifications.\",\n \"items\": {\n \"description\": \"OpsGenieConfigResponder defines a responder to an incident.\\nOne of `id`, `name` or `username` has to be defined.\",\n \"properties\": {\n \"id\": {\n \"description\": \"ID of the responder.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the responder.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of responder.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username of the responder.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"send_resolved\": {\n \"description\": \"SendResolved controls notify about resolved alerts.\",\n \"type\": \"boolean\"\n },\n \"source\": {\n \"description\": \"Backlink to the sender of the notification.\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"Comma separated list of tags attached to the notifications.\",\n \"type\": \"string\"\n },\n \"update_alerts\": {\n \"description\": \"Whether to update message and description of the alert in OpsGenie if it already exists\\nBy default, the alert is never updated in OpsGenie, the new message only appears in activity log.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"pagerduty_configs\": {\n \"description\": \"PagerDutyConfigs defines pager duty notification configurations.\",\n \"items\": {\n \"description\": \"PagerDutyConfig configures notifications via PagerDuty.\\nSee https://prometheus.io/docs/alerting/latest/configuration/#pagerduty_config\",\n \"properties\": {\n \"class\": {\n \"description\": \"The class/type of the event.\",\n \"type\": \"string\"\n },\n \"client\": {\n \"description\": \"Client identification.\",\n \"type\": \"string\"\n },\n \"client_url\": {\n \"description\": \"Backlink to the sender of notification.\",\n \"type\": \"string\"\n },\n \"component\": {\n \"description\": \"The part or component of the affected system that is broken.\",\n \"type\": \"string\"\n },\n \"description\": {\n \"description\": \"Description of the incident.\",\n \"type\": \"string\"\n },\n \"details\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Arbitrary key/value pairs that provide further detail about the incident.\",\n \"type\": \"object\"\n },\n \"group\": {\n \"description\": \"A cluster or grouping of sources.\",\n \"type\": \"string\"\n },\n \"http_config\": {\n \"description\": \"HTTP client configuration.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"images\": {\n \"description\": \"Images to attach to the incident.\",\n \"items\": {\n \"description\": \"ImageConfig is used to attach images to the incident.\\nSee https://developer.pagerduty.com/docs/ZG9jOjExMDI5NTgx-send-an-alert-event#the-images-property\\nfor more information.\",\n \"properties\": {\n \"alt\": {\n \"type\": \"string\"\n },\n \"href\": {\n \"type\": \"string\"\n },\n \"source\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"source\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"links\": {\n \"description\": \"Links to attach to the incident.\",\n \"items\": {\n \"description\": \"LinkConfig is used to attach text links to the incident.\\nSee https://developer.pagerduty.com/docs/ZG9jOjExMDI5NTgx-send-an-alert-event#the-links-property\\nfor more information.\",\n \"properties\": {\n \"href\": {\n \"type\": \"string\"\n },\n \"text\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"href\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"routing_key\": {\n \"description\": \"The secret's key that contains the PagerDuty integration key (when using\\nEvents API v2). Either this field or `serviceKey` needs to be defined.\\nIt must be at them same namespace as CRD\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"send_resolved\": {\n \"description\": \"SendResolved controls notify about resolved alerts.\",\n \"type\": \"boolean\"\n },\n \"service_key\": {\n \"description\": \"The secret's key that contains the PagerDuty service key (when using\\nintegration type \\\"Prometheus\\\"). Either this field or `routingKey` needs to\\nbe defined.\\nIt must be at them same namespace as CRD\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"severity\": {\n \"description\": \"Severity of the incident.\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"The URL to send requests to.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"pushover_configs\": {\n \"description\": \"PushoverConfigs defines push over notification configurations.\",\n \"items\": {\n \"description\": \"PushoverConfig configures notifications via Pushover.\\nSee https://prometheus.io/docs/alerting/latest/configuration/#pushover_config\",\n \"properties\": {\n \"expire\": {\n \"description\": \"How long your notification will continue to be retried for, unless the user\\nacknowledges the notification.\",\n \"type\": \"string\"\n },\n \"html\": {\n \"description\": \"Whether notification message is HTML or plain text.\",\n \"type\": \"boolean\"\n },\n \"http_config\": {\n \"description\": \"HTTP client configuration.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"Notification message.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"Priority, see https://pushover.net/api#priority\",\n \"type\": \"string\"\n },\n \"retry\": {\n \"description\": \"How often the Pushover servers will send the same notification to the user.\\nMust be at least 30 seconds.\",\n \"type\": \"string\"\n },\n \"send_resolved\": {\n \"description\": \"SendResolved controls notify about resolved alerts.\",\n \"type\": \"boolean\"\n },\n \"sound\": {\n \"description\": \"The name of one of the sounds supported by device clients to override the user's default sound choice\",\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Notification title.\",\n \"type\": \"string\"\n },\n \"token\": {\n \"description\": \"The secret's key that contains the registered application’s API token, see https://pushover.net/apps.\\nIt must be at them same namespace as CRD\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"url\": {\n \"description\": \"A supplementary URL shown alongside the message.\",\n \"type\": \"string\"\n },\n \"url_title\": {\n \"description\": \"A title for supplementary URL, otherwise just the URL is shown\",\n \"type\": \"string\"\n },\n \"user_key\": {\n \"description\": \"The secret's key that contains the recipient user’s user key.\\nIt must be at them same namespace as CRD\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"slack_configs\": {\n \"description\": \"SlackConfigs defines slack notification configurations.\",\n \"items\": {\n \"description\": \"SlackConfig configures notifications via Slack.\\nSee https://prometheus.io/docs/alerting/latest/configuration/#slack_config\",\n \"properties\": {\n \"actions\": {\n \"description\": \"A list of Slack actions that are sent with each notification.\",\n \"items\": {\n \"description\": \"SlackAction configures a single Slack action that is sent with each\\nnotification.\\nSee https://api.slack.com/docs/message-attachments#action_fields and\\nhttps://api.slack.com/docs/message-buttons for more information.\",\n \"properties\": {\n \"confirm\": {\n \"description\": \"SlackConfirmationField protect users from destructive actions or\\nparticularly distinguished decisions by asking them to confirm their button\\nclick one more time.\\nSee https://api.slack.com/docs/interactive-message-field-guide#confirmation_fields\\nfor more information.\",\n \"properties\": {\n \"dismiss_text\": {\n \"type\": \"string\"\n },\n \"ok_text\": {\n \"type\": \"string\"\n },\n \"text\": {\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"text\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"style\": {\n \"type\": \"string\"\n },\n \"text\": {\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"type\": {\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"url\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"text\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"api_url\": {\n \"description\": \"The secret's key that contains the Slack webhook URL.\\nIt must be at them same namespace as CRD\\nfallback to global setting if empty\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"callback_id\": {\n \"type\": \"string\"\n },\n \"channel\": {\n \"description\": \"The channel or user to send notifications to.\",\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"fallback\": {\n \"type\": \"string\"\n },\n \"fields\": {\n \"description\": \"A list of Slack fields that are sent with each notification.\",\n \"items\": {\n \"description\": \"SlackField configures a single Slack field that is sent with each notification.\\nSee https://api.slack.com/docs/message-attachments#fields for more information.\",\n \"properties\": {\n \"short\": {\n \"type\": \"boolean\"\n },\n \"title\": {\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"value\": {\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"title\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"footer\": {\n \"type\": \"string\"\n },\n \"http_config\": {\n \"description\": \"HTTP client configuration.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"icon_emoji\": {\n \"type\": \"string\"\n },\n \"icon_url\": {\n \"type\": \"string\"\n },\n \"image_url\": {\n \"type\": \"string\"\n },\n \"link_names\": {\n \"type\": \"boolean\"\n },\n \"mrkdwn_in\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pretext\": {\n \"type\": \"string\"\n },\n \"send_resolved\": {\n \"description\": \"SendResolved controls notify about resolved alerts.\",\n \"type\": \"boolean\"\n },\n \"short_fields\": {\n \"type\": \"boolean\"\n },\n \"text\": {\n \"type\": \"string\"\n },\n \"thumb_url\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"title_link\": {\n \"type\": \"string\"\n },\n \"username\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sns_configs\": {\n \"items\": {\n \"properties\": {\n \"api_url\": {\n \"description\": \"The api URL\",\n \"type\": \"string\"\n },\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"SNS message attributes\",\n \"type\": \"object\"\n },\n \"http_config\": {\n \"description\": \"HTTP client configuration.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization header configuration for the client.\\nThis is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Reference to the secret with value for authorization\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"credentialsFile\": {\n \"description\": \"File with value for authorization\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of authorization, default to bearer\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basic_auth\": {\n \"description\": \"BasicAuth for the client.\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearer_token_file\": {\n \"description\": \"BearerTokenFile defines filename for bearer token, it must be mounted to pod.\",\n \"type\": \"string\"\n },\n \"bearer_token_secret\": {\n \"description\": \"The secret's key that contains the bearer token\\nIt must be at them same namespace as CRD\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 client credentials used to fetch a token for the targets.\",\n \"properties\": {\n \"client_id\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"client_secret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"client_secret_file\": {\n \"description\": \"ClientSecretFile defines path for client secret file.\",\n \"type\": \"string\"\n },\n \"endpoint_params\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"token_url\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"client_id\",\n \"token_url\"\n ],\n \"type\": \"object\"\n },\n \"proxyURL\": {\n \"description\": \"Optional proxy URL.\",\n \"type\": \"string\"\n },\n \"tls_config\": {\n \"description\": \"TLS configuration for the client.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"message\": {\n \"description\": \"The message content of the SNS notification.\",\n \"type\": \"string\"\n },\n \"phone_number\": {\n \"description\": \"Phone number if message is delivered via SMS\\nSpecify this, topic_arn or target_arn\",\n \"type\": \"string\"\n },\n \"send_resolved\": {\n \"description\": \"SendResolved controls notify about resolved alerts.\",\n \"type\": \"boolean\"\n },\n \"sigv4\": {\n \"description\": \"Configure the AWS Signature Verification 4 signing process\",\n \"properties\": {\n \"access_key\": {\n \"description\": \"The AWS API keys. Both access_key and secret_key must be supplied or both must be blank.\\nIf blank the environment variables `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` are used.\",\n \"type\": \"string\"\n },\n \"access_key_selector\": {\n \"description\": \"secret key selector to get the keys from a Kubernetes Secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"profile\": {\n \"description\": \"Named AWS profile used to authenticate\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"AWS region, if blank the region from the default credentials chain is used\",\n \"type\": \"string\"\n },\n \"role_arn\": {\n \"description\": \"AWS Role ARN, an alternative to using AWS API keys\",\n \"type\": \"string\"\n },\n \"secret_key_selector\": {\n \"description\": \"secret key selector to get the keys from a Kubernetes Secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"subject\": {\n \"description\": \"The subject line if message is delivered to an email endpoint.\",\n \"type\": \"string\"\n },\n \"target_arn\": {\n \"description\": \"Mobile platform endpoint ARN if message is delivered via mobile notifications\\nSpecify this, topic_arn or phone_number\",\n \"type\": \"string\"\n },\n \"topic_arn\": {\n \"description\": \"SNS topic ARN, either specify this, phone_number or target_arn\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"telegram_configs\": {\n \"items\": {\n \"description\": \"TelegramConfig configures notification via telegram\\nhttps://prometheus.io/docs/alerting/latest/configuration/#telegram_config\",\n \"properties\": {\n \"api_url\": {\n \"description\": \"APIUrl the Telegram API URL i.e. https://api.telegram.org.\",\n \"type\": \"string\"\n },\n \"bot_token\": {\n \"description\": \"BotToken token for the bot\\nhttps://core.telegram.org/bots/api\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"chat_id\": {\n \"description\": \"ChatID is ID of the chat where to send the messages.\",\n \"type\": \"integer\"\n },\n \"disable_notifications\": {\n \"description\": \"DisableNotifications\",\n \"type\": \"boolean\"\n },\n \"http_config\": {\n \"description\": \"HTTP client configuration.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"Message is templated message\",\n \"type\": \"string\"\n },\n \"parse_mode\": {\n \"description\": \"ParseMode for telegram message,\\nsupported values are MarkdownV2, Markdown, Markdown and empty string for plain text.\",\n \"type\": \"string\"\n },\n \"send_resolved\": {\n \"description\": \"SendResolved controls notify about resolved alerts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"bot_token\",\n \"chat_id\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"victorops_configs\": {\n \"description\": \"VictorOpsConfigs defines victor ops notification configurations.\",\n \"items\": {\n \"description\": \"VictorOpsConfig configures notifications via VictorOps.\\nSee https://prometheus.io/docs/alerting/latest/configuration/#victorops_config\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The secret's key that contains the API key to use when talking to the VictorOps API.\\nIt must be at them same namespace as CRD\\nfallback to global setting if empty\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"api_url\": {\n \"description\": \"The VictorOps API URL.\",\n \"type\": \"string\"\n },\n \"custom_fields\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Adds optional custom fields\\nhttps://github.com/prometheus/alertmanager/blob/v0.24.0/config/notifiers.go#L537\",\n \"type\": \"object\"\n },\n \"entity_display_name\": {\n \"description\": \"Contains summary of the alerted problem.\",\n \"type\": \"string\"\n },\n \"http_config\": {\n \"description\": \"The HTTP client's configuration.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization header configuration for the client.\\nThis is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Reference to the secret with value for authorization\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"credentialsFile\": {\n \"description\": \"File with value for authorization\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of authorization, default to bearer\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basic_auth\": {\n \"description\": \"BasicAuth for the client.\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearer_token_file\": {\n \"description\": \"BearerTokenFile defines filename for bearer token, it must be mounted to pod.\",\n \"type\": \"string\"\n },\n \"bearer_token_secret\": {\n \"description\": \"The secret's key that contains the bearer token\\nIt must be at them same namespace as CRD\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 client credentials used to fetch a token for the targets.\",\n \"properties\": {\n \"client_id\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"client_secret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"client_secret_file\": {\n \"description\": \"ClientSecretFile defines path for client secret file.\",\n \"type\": \"string\"\n },\n \"endpoint_params\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"token_url\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"client_id\",\n \"token_url\"\n ],\n \"type\": \"object\"\n },\n \"proxyURL\": {\n \"description\": \"Optional proxy URL.\",\n \"type\": \"string\"\n },\n \"tls_config\": {\n \"description\": \"TLS configuration for the client.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"message_type\": {\n \"description\": \"Describes the behavior of the alert (CRITICAL, WARNING, INFO).\",\n \"type\": \"string\"\n },\n \"monitoring_tool\": {\n \"description\": \"The monitoring tool the state message is from.\",\n \"type\": \"string\"\n },\n \"routing_key\": {\n \"description\": \"A key used to map the alert to a team.\",\n \"type\": \"string\"\n },\n \"send_resolved\": {\n \"description\": \"SendResolved controls notify about resolved alerts.\",\n \"type\": \"boolean\"\n },\n \"state_message\": {\n \"description\": \"Contains long explanation of the alerted problem.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"routing_key\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"webex_configs\": {\n \"items\": {\n \"properties\": {\n \"api_url\": {\n \"description\": \"The Webex Teams API URL, i.e. https://webexapis.com/v1/messages\",\n \"type\": \"string\"\n },\n \"http_config\": {\n \"description\": \"HTTP client configuration. You must use this configuration to supply the bot token as part of the HTTP `Authorization` header.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization header configuration for the client.\\nThis is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Reference to the secret with value for authorization\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"credentialsFile\": {\n \"description\": \"File with value for authorization\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of authorization, default to bearer\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basic_auth\": {\n \"description\": \"BasicAuth for the client.\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearer_token_file\": {\n \"description\": \"BearerTokenFile defines filename for bearer token, it must be mounted to pod.\",\n \"type\": \"string\"\n },\n \"bearer_token_secret\": {\n \"description\": \"The secret's key that contains the bearer token\\nIt must be at them same namespace as CRD\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 client credentials used to fetch a token for the targets.\",\n \"properties\": {\n \"client_id\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"client_secret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"client_secret_file\": {\n \"description\": \"ClientSecretFile defines path for client secret file.\",\n \"type\": \"string\"\n },\n \"endpoint_params\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"token_url\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"client_id\",\n \"token_url\"\n ],\n \"type\": \"object\"\n },\n \"proxyURL\": {\n \"description\": \"Optional proxy URL.\",\n \"type\": \"string\"\n },\n \"tls_config\": {\n \"description\": \"TLS configuration for the client.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"message\": {\n \"description\": \"The message body template\",\n \"type\": \"string\"\n },\n \"room_id\": {\n \"description\": \"The ID of the Webex Teams room where to send the messages\",\n \"type\": \"string\"\n },\n \"send_resolved\": {\n \"description\": \"SendResolved controls notify about resolved alerts.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"webhook_configs\": {\n \"description\": \"WebhookConfigs defines webhook notification configurations.\",\n \"items\": {\n \"description\": \"WebhookConfig configures notifications via a generic receiver supporting the webhook payload.\\nSee https://prometheus.io/docs/alerting/latest/configuration/#webhook_config\",\n \"properties\": {\n \"http_config\": {\n \"description\": \"HTTP client configuration.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"max_alerts\": {\n \"description\": \"Maximum number of alerts to be sent per webhook message. When 0, all alerts are included.\",\n \"format\": \"int32\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"send_resolved\": {\n \"description\": \"SendResolved controls notify about resolved alerts.\",\n \"type\": \"boolean\"\n },\n \"url\": {\n \"description\": \"URL to send requests to,\\none of `urlSecret` and `url` must be defined.\",\n \"type\": \"string\"\n },\n \"url_secret\": {\n \"description\": \"URLSecret defines secret name and key at the CRD namespace.\\nIt must contain the webhook URL.\\none of `urlSecret` and `url` must be defined.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"wechat_configs\": {\n \"description\": \"WeChatConfigs defines wechat notification configurations.\",\n \"items\": {\n \"description\": \"WeChatConfig configures notifications via WeChat.\\nSee https://prometheus.io/docs/alerting/latest/configuration/#wechat_config\",\n \"properties\": {\n \"agent_id\": {\n \"type\": \"string\"\n },\n \"api_secret\": {\n \"description\": \"The secret's key that contains the WeChat API key.\\nThe secret needs to be in the same namespace as the AlertmanagerConfig\\nfallback to global alertmanager setting if empty\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"api_url\": {\n \"description\": \"The WeChat API URL.\\nfallback to global alertmanager setting if empty\",\n \"type\": \"string\"\n },\n \"corp_id\": {\n \"description\": \"The corp id for authentication.\\nfallback to global alertmanager setting if empty\",\n \"type\": \"string\"\n },\n \"http_config\": {\n \"description\": \"HTTP client configuration.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization header configuration for the client.\\nThis is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Reference to the secret with value for authorization\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"credentialsFile\": {\n \"description\": \"File with value for authorization\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of authorization, default to bearer\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basic_auth\": {\n \"description\": \"BasicAuth for the client.\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearer_token_file\": {\n \"description\": \"BearerTokenFile defines filename for bearer token, it must be mounted to pod.\",\n \"type\": \"string\"\n },\n \"bearer_token_secret\": {\n \"description\": \"The secret's key that contains the bearer token\\nIt must be at them same namespace as CRD\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 client credentials used to fetch a token for the targets.\",\n \"properties\": {\n \"client_id\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"client_secret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"client_secret_file\": {\n \"description\": \"ClientSecretFile defines path for client secret file.\",\n \"type\": \"string\"\n },\n \"endpoint_params\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"token_url\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"client_id\",\n \"token_url\"\n ],\n \"type\": \"object\"\n },\n \"proxyURL\": {\n \"description\": \"Optional proxy URL.\",\n \"type\": \"string\"\n },\n \"tls_config\": {\n \"description\": \"TLS configuration for the client.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"message\": {\n \"description\": \"API request data as defined by the WeChat API.\",\n \"type\": \"string\"\n },\n \"message_type\": {\n \"type\": \"string\"\n },\n \"send_resolved\": {\n \"description\": \"SendResolved controls notify about resolved alerts.\",\n \"type\": \"boolean\"\n },\n \"to_party\": {\n \"type\": \"string\"\n },\n \"to_tag\": {\n \"type\": \"string\"\n },\n \"to_user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"route\": {\n \"description\": \"Route definition for alertmanager, may include nested routes.\",\n \"properties\": {\n \"active_time_intervals\": {\n \"description\": \"ActiveTimeIntervals Times when the route should be active\\nThese must match the name at time_intervals\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"continue\": {\n \"description\": \"Continue indicating whether an alert should continue matching subsequent\\nsibling nodes. It will always be true for the first-level route if disableRouteContinueEnforce for vmalertmanager not set.\",\n \"type\": \"boolean\"\n },\n \"group_by\": {\n \"description\": \"List of labels to group by.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"group_interval\": {\n \"description\": \"How long to wait before sending an updated notification.\",\n \"pattern\": \"[0-9]+(ms|s|m|h)\",\n \"type\": \"string\"\n },\n \"group_wait\": {\n \"description\": \"How long to wait before sending the initial notification.\",\n \"pattern\": \"[0-9]+(ms|s|m|h)\",\n \"type\": \"string\"\n },\n \"matchers\": {\n \"description\": \"List of matchers that the alert’s labels should match. For the first\\nlevel route, the operator adds a namespace: \\\"CRD_NS\\\" matcher.\\nhttps://prometheus.io/docs/alerting/latest/configuration/#matcher\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"mute_time_intervals\": {\n \"description\": \"MuteTimeIntervals is a list of interval names that will mute matched alert\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"receiver\": {\n \"description\": \"Name of the receiver for this route.\",\n \"type\": \"string\"\n },\n \"repeat_interval\": {\n \"description\": \"How long to wait before repeating the last notification.\",\n \"pattern\": \"[0-9]+(ms|s|m|h)\",\n \"type\": \"string\"\n },\n \"routes\": {\n \"description\": \"Child routes.\\nhttps://prometheus.io/docs/alerting/latest/configuration/#route\",\n \"items\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"receiver\"\n ],\n \"type\": \"object\"\n },\n \"time_intervals\": {\n \"description\": \"TimeIntervals defines named interval for active/mute notifications interval\\nSee https://prometheus.io/docs/alerting/latest/configuration/#time_interval\",\n \"items\": {\n \"description\": \"TimeIntervals for alerts\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of interval\",\n \"type\": \"string\"\n },\n \"time_intervals\": {\n \"description\": \"TimeIntervals interval configuration\",\n \"items\": {\n \"description\": \"TimeInterval defines intervals of time\",\n \"properties\": {\n \"days_of_month\": {\n \"description\": \"DayOfMonth defines list of numerical days in the month. Days begin at 1. Negative values are also accepted.\\nfor example, ['1:5', '-3:-1']\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"location\": {\n \"description\": \"Location in golang time location form, e.g. UTC\",\n \"type\": \"string\"\n },\n \"months\": {\n \"description\": \"Months defines list of calendar months identified by a case-insensitive name (e.g. ‘January’) or numeric 1.\\nFor example, ['1:3', 'may:august', 'december']\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"times\": {\n \"description\": \"Times defines time range for mute\",\n \"items\": {\n \"description\": \"TimeRange ranges inclusive of the starting time and exclusive of the end time\",\n \"properties\": {\n \"end_time\": {\n \"description\": \"EndTime for example HH:MM\",\n \"type\": \"string\"\n },\n \"start_time\": {\n \"description\": \"StartTime for example HH:MM\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"end_time\",\n \"start_time\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"weekdays\": {\n \"description\": \"Weekdays defines list of days of the week, where the week begins on Sunday and ends on Saturday.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"years\": {\n \"description\": \"Years defines numerical list of years, ranges are accepted.\\nFor example, ['2020:2022', '2030']\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"time_intervals\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"receivers\",\n \"route\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"VM Alertmanager Config\",\n \"type\": \"object\"\n}", + "version": "operator.victoriametrics.com/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "VM Alertmanager Config", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz" + }, + "model": { + "category": { + "name": "Observability and Analysis" + }, + "displayName": "Victoria Metrics K8S Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0_36_80\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003c/svg\u003e" + }, + "model": { + "version": "0.25.8" + }, + "name": "victoria-metrics-k8s-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Monitoring", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"18\" height=\"18\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0_36_80\"\u003e\n\u003crect width=\"32\" height=\"32\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMAuth.json b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMAuth.json new file mode 100644 index 00000000000..0f792119207 --- /dev/null +++ b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMAuth.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "VMAuth", + "schema": "{\n \"description\": \"VMAuth is the Schema for the vmauths API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"VMAuthSpec defines the desired state of VMAuth\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity If specified, the pod's scheduling constraints.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"configMaps\": {\n \"description\": \"ConfigMaps is a list of ConfigMaps in the same namespace as the VMAuth\\nobject, which shall be mounted into the VMAuth Pods.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"configReloaderExtraArgs\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"ConfigReloaderExtraArgs that will be passed to VMAuths config-reloader container\\nfor example resyncInterval: \\\"30s\\\"\",\n \"type\": \"object\"\n },\n \"configSecret\": {\n \"description\": \"ConfigSecret is the name of a Kubernetes Secret in the same namespace as the\\nVMAuth object, which contains auth configuration for vmauth,\\nconfiguration must be inside secret key: config.yaml.\\nIt must be created and managed manually.\\nIf it's defined, configuration for vmauth becomes unmanaged and operator'll not create any related secrets/config-reloaders\",\n \"type\": \"string\"\n },\n \"containers\": {\n \"description\": \"Containers property allows to inject additions sidecars or to patch existing containers.\\nIt can be useful for proxies, backup, etc.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"default_url\": {\n \"description\": \"DefaultURLs backend url for non-matching paths filter\\nusually used for default backend with error message\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"discover_backend_ips\": {\n \"description\": \"DiscoverBackendIPs instructs discovering URLPrefix backend IPs via DNS.\",\n \"type\": \"boolean\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"items\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"DNSPolicy sets DNS policy for the pod\",\n \"type\": \"string\"\n },\n \"drop_src_path_prefix_parts\": {\n \"description\": \"DropSrcPathPrefixParts is the number of `/`-delimited request path prefix parts to drop before proxying the request to backend.\\nSee [here](https://docs.victoriametrics.com/vmauth#dropping-request-path-prefix) for more details.\",\n \"type\": \"integer\"\n },\n \"extraArgs\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"ExtraArgs that will be passed to VMAuth pod\\nfor example remoteWrite.tmpDataPath: /tmp\",\n \"type\": \"object\"\n },\n \"extraEnvs\": {\n \"description\": \"ExtraEnvs that will be added to VMAuth pod\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"format\": \"textarea\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"headers\": {\n \"description\": \"Headers represent additional http headers, that vmauth uses\\nin form of [\\\"header_key: header_value\\\"]\\nmultiple values for header key:\\n[\\\"header_key: value1,value2\\\"]\\nit's available since 1.68.0 version of vmauth\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hostAliases\": {\n \"description\": \"HostAliases provides mapping for ip and hostname,\\nthat would be propagated to pod,\\ncannot be used with HostNetwork.\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\\npod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ip\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"hostNetwork\": {\n \"description\": \"HostNetwork controls whether the pod may use the node network namespace\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image - docker image settings for VMAuth\\nif no specified operator uses default config version\",\n \"properties\": {\n \"pullPolicy\": {\n \"description\": \"PullPolicy describes how to pull docker image\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"Repository contains name of docker image + it's repository if needed\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"description\": \"Tag contains desired docker image version\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets An optional list of references to secrets in the same namespace\\nto use for pulling images from registries\\nsee https://kubernetes.io/docs/concepts/containers/images/#referring-to-an-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"ingress\": {\n \"description\": \"Ingress enables ingress configuration for VMAuth.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"class_name\": {\n \"description\": \"ClassName defines ingress class name for VMAuth\",\n \"type\": \"string\"\n },\n \"extraRules\": {\n \"description\": \"ExtraRules - additional rules for ingress,\\nmust be checked for correctness by user.\",\n \"items\": {\n \"description\": \"IngressRule represents the rules mapping the paths under a specified host to\\nthe related backend services. Incoming requests are first evaluated for a host\\nmatch, then routed to the backend associated with the matching IngressRuleValue.\",\n \"properties\": {\n \"host\": {\n \"description\": \"host is the fully qualified domain name of a network host, as defined by RFC 3986.\\nNote the following deviations from the \\\"host\\\" part of the\\nURI as defined in RFC 3986:\\n1. IPs are not allowed. Currently an IngressRuleValue can only apply to\\n the IP in the Spec of the parent Ingress.\\n2. The `:` delimiter is not respected because ports are not allowed.\\n\\t Currently the port of an Ingress is implicitly :80 for http and\\n\\t :443 for https.\\nBoth these may change in the future.\\nIncoming requests are matched against the host before the\\nIngressRuleValue. If the host is unspecified, the Ingress routes all\\ntraffic based on the specified IngressRuleValue.\\n\\n\\nhost can be \\\"precise\\\" which is a domain name without the terminating dot of\\na network host (e.g. \\\"foo.bar.com\\\") or \\\"wildcard\\\", which is a domain name\\nprefixed with a single wildcard label (e.g. \\\"*.foo.com\\\").\\nThe wildcard character '*' must appear by itself as the first DNS label and\\nmatches only a single label. You cannot have a wildcard label by itself (e.g. Host == \\\"*\\\").\\nRequests will be matched against the Host field in the following way:\\n1. If host is precise, the request matches this rule if the http host header is equal to Host.\\n2. If host is a wildcard, then the request matches this rule if the http host header\\nis to equal to the suffix (removing the first label) of the wildcard rule.\",\n \"type\": \"string\"\n },\n \"http\": {\n \"description\": \"HTTPIngressRuleValue is a list of http selectors pointing to backends.\\nIn the example: http://\\u003chost\\u003e/\\u003cpath\\u003e?\\u003csearchpart\\u003e -\\u003e backend where\\nwhere parts of the url correspond to RFC 3986, this resource will be used\\nto match against everything after the last '/' and before the first '?'\\nor '#'.\",\n \"properties\": {\n \"paths\": {\n \"description\": \"paths is a collection of paths that map requests to backends.\",\n \"items\": {\n \"description\": \"HTTPIngressPath associates a path with a backend. Incoming urls matching the\\npath are forwarded to the backend.\",\n \"properties\": {\n \"backend\": {\n \"description\": \"backend defines the referenced service endpoint to which the traffic\\nwill be forwarded to.\",\n \"properties\": {\n \"resource\": {\n \"description\": \"resource is an ObjectRef to another Kubernetes resource in the namespace\\nof the Ingress object. If resource is specified, a service.Name and\\nservice.Port must not be specified.\\nThis is a mutually exclusive setting with \\\"Service\\\".\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"service\": {\n \"description\": \"service references a service as a backend.\\nThis is a mutually exclusive setting with \\\"Resource\\\".\",\n \"properties\": {\n \"name\": {\n \"description\": \"name is the referenced service. The service must exist in\\nthe same namespace as the Ingress object.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"port of the referenced service. A port name or port number\\nis required for a IngressServiceBackend.\",\n \"properties\": {\n \"name\": {\n \"description\": \"name is the name of the port on the Service.\\nThis is a mutually exclusive setting with \\\"Number\\\".\",\n \"type\": \"string\"\n },\n \"number\": {\n \"description\": \"number is the numerical port number (e.g. 80) on the Service.\\nThis is a mutually exclusive setting with \\\"Name\\\".\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"description\": \"path is matched against the path of an incoming request. Currently it can\\ncontain characters disallowed from the conventional \\\"path\\\" part of a URL\\nas defined by RFC 3986. Paths must begin with a '/' and must be present\\nwhen using PathType with value \\\"Exact\\\" or \\\"Prefix\\\".\",\n \"type\": \"string\"\n },\n \"pathType\": {\n \"description\": \"pathType determines the interpretation of the path matching. PathType can\\nbe one of the following values:\\n* Exact: Matches the URL path exactly.\\n* Prefix: Matches based on a URL path prefix split by '/'. Matching is\\n done on a path element by element basis. A path element refers is the\\n list of labels in the path split by the '/' separator. A request is a\\n match for path p if every p is an element-wise prefix of p of the\\n request path. Note that if the last element of the path is a substring\\n of the last element in request path, it is not a match (e.g. /foo/bar\\n matches /foo/bar/baz, but does not match /foo/barbaz).\\n* ImplementationSpecific: Interpretation of the Path matching is up to\\n the IngressClass. Implementations can treat this as a separate PathType\\n or treat it identically to Prefix or Exact path types.\\nImplementations are required to support all path types.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"backend\",\n \"pathType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"paths\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"extraTls\": {\n \"description\": \"ExtraTLS - additional TLS configuration for ingress\\nmust be checked for correctness by user.\",\n \"items\": {\n \"description\": \"IngressTLS describes the transport layer security associated with an ingress.\",\n \"properties\": {\n \"hosts\": {\n \"description\": \"hosts is a list of hosts included in the TLS certificate. The values in\\nthis list must match the name/s used in the tlsSecret. Defaults to the\\nwildcard host setting for the loadbalancer controller fulfilling this\\nIngress, if left unspecified.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret used to terminate TLS traffic on\\nport 443. Field is left optional to allow TLS routing based on SNI\\nhostname alone. If the SNI host in a listener conflicts with the \\\"Host\\\"\\nheader field used by an IngressRule, the SNI host is used for termination\\nand value of the \\\"Host\\\" header is used for routing.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"host\": {\n \"description\": \"Host defines ingress host parameter for default rule\\nIt will be used, only if TlsHosts is empty\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n },\n \"tlsHosts\": {\n \"description\": \"TlsHosts configures TLS access for ingress, tlsSecretName must be defined for it.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tlsSecretName\": {\n \"description\": \"TlsSecretName defines secretname at the VMAuth namespace with cert and key\\nhttps://kubernetes.io/docs/concepts/services-networking/ingress/#tls\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"initContainers\": {\n \"description\": \"InitContainers allows adding initContainers to the pod definition. Those can be used to e.g.\\nfetch secrets for injection into the vmSingle configuration from external sources. Any\\nerrors 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/\\nUsing initContainers for any use case other then secret fetching is entirely outside the scope\\nof what the maintainers will support and by doing so, you accept that this behaviour may break\\nat any time without notice.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ip_filters\": {\n \"description\": \"IPFilters defines per target src ip filters\\nsupported only with enterprise version of [vmauth](https://docs.victoriametrics.com/vmauth/#ip-filters)\",\n \"properties\": {\n \"allow_list\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"deny_list\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"license\": {\n \"description\": \"License allows to configure license key to be used for enterprise features.\\nUsing license key is supported starting from VictoriaMetrics v1.94.0.\\nSee [here](https://docs.victoriametrics.com/enterprise)\",\n \"properties\": {\n \"key\": {\n \"description\": \"Enterprise license key. This flag is available only in [VictoriaMetrics enterprise](https://docs.victoriametrics.com/enterprise).\\nTo request a trial license, [go to](https://victoriametrics.com/products/enterprise/trial)\",\n \"type\": \"string\"\n },\n \"keyRef\": {\n \"description\": \"KeyRef is reference to secret with license key for enterprise features.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"LivenessProbe that will be added CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"load_balancing_policy\": {\n \"description\": \"LoadBalancingPolicy defines load balancing policy to use for backend urls.\\nSupported policies: least_loaded, first_available.\\nSee [here](https://docs.victoriametrics.com/vmauth#load-balancing) for more details (default \\\"least_loaded\\\")\",\n \"enum\": [\n \"least_loaded\",\n \"first_available\"\n ],\n \"type\": \"string\"\n },\n \"logFormat\": {\n \"description\": \"LogFormat for VMAuth to be configured with.\",\n \"enum\": [\n \"default\",\n \"json\"\n ],\n \"type\": \"string\"\n },\n \"logLevel\": {\n \"description\": \"LogLevel for victoria metrics single to be configured with.\",\n \"enum\": [\n \"INFO\",\n \"WARN\",\n \"ERROR\",\n \"FATAL\",\n \"PANIC\"\n ],\n \"type\": \"string\"\n },\n \"max_concurrent_requests\": {\n \"description\": \"MaxConcurrentRequests defines max concurrent requests per user\\n300 is default value for vmauth\",\n \"type\": \"integer\"\n },\n \"minReadySeconds\": {\n \"description\": \"MinReadySeconds defines a minim number os seconds to wait before starting update next pod\\nif previous in healthy state\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector Define which Nodes the Pods are scheduled on.\",\n \"type\": \"object\"\n },\n \"paused\": {\n \"description\": \"Paused If set to true all actions on the underlying managed objects are not\\ngoing to be performed, except for delete actions.\",\n \"type\": \"boolean\"\n },\n \"podDisruptionBudget\": {\n \"description\": \"PodDisruptionBudget created by operator\",\n \"properties\": {\n \"maxUnavailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"An eviction is allowed if at most \\\"maxUnavailable\\\" pods selected by\\n\\\"selector\\\" are unavailable after the eviction, i.e. even in absence of\\nthe evicted pod. For example, one can prevent all voluntary evictions\\nby specifying 0. This is a mutually exclusive setting with \\\"minAvailable\\\".\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minAvailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"An eviction is allowed if at least \\\"minAvailable\\\" pods selected by\\n\\\"selector\\\" will still be available after the eviction, i.e. even in the\\nabsence of the evicted pod. So for example you can prevent all voluntary\\nevictions by specifying \\\"100%\\\".\",\n \"x-kubernetes-int-or-string\": true\n },\n \"selectorLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"replaces default labels selector generated by operator\\nit's useful when you need to create custom budget\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"podMetadata\": {\n \"description\": \"PodMetadata configures Labels and Annotations which are propagated to the VMAuth pods.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"port\": {\n \"description\": \"Port listen port\",\n \"type\": \"string\"\n },\n \"priorityClassName\": {\n \"description\": \"PriorityClassName assigned to the Pods\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"ReadinessGates defines pod readiness gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readinessProbe\": {\n \"description\": \"ReadinessProbe that will be added CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replicaCount\": {\n \"description\": \"ReplicaCount is the expected size of the VMAuth\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"resources\": {\n \"description\": \"Resources container resource request and limits, https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\\nif not defined default resources from operator config will be used\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"response_headers\": {\n \"description\": \"ResponseHeaders represent additional http headers, that vmauth adds for request response\\nin form of [\\\"header_key: header_value\\\"]\\nmultiple values for header key:\\n[\\\"header_key: value1,value2\\\"]\\nit's available since 1.93.0 version of vmauth\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"retry_status_codes\": {\n \"description\": \"RetryStatusCodes defines http status codes in numeric format for request retries\\ne.g. [429,503]\",\n \"items\": {\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"revisionHistoryLimitCount\": {\n \"description\": \"The number of old ReplicaSets to retain to allow rollback in deployment or\\nmaximum number of revisions that will be maintained in the StatefulSet's revision history.\\nDefaults to 10.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName - defines runtime class for kubernetes pod.\\nhttps://kubernetes.io/docs/concepts/containers/runtime-class/\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"SchedulerName - defines kubernetes scheduler name\",\n \"type\": \"string\"\n },\n \"secrets\": {\n \"description\": \"Secrets is a list of Secrets in the same namespace as the VMAuth\\nobject, which shall be mounted into the VMAuth Pods.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nThis defaults to the default PodSecurityContext.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"selectAllByDefault\": {\n \"description\": \"SelectAllByDefault changes default behavior for empty CRD selectors, such userSelector.\\nwith selectAllByDefault: true and empty userSelector and userNamespaceSelector\\nOperator selects all exist users\\nwith selectAllByDefault: false - selects nothing\",\n \"type\": \"boolean\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run the\\nVMAuth Pods.\",\n \"type\": \"string\"\n },\n \"serviceScrapeSpec\": {\n \"description\": \"ServiceScrapeSpec that will be added to vmauth VMServiceScrape spec\",\n \"format\": \"textarea\",\n \"required\": [\n \"endpoints\"\n ],\n \"type\": \"string\"\n },\n \"serviceSpec\": {\n \"description\": \"ServiceSpec that will be added to vmsingle service spec\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"EmbeddedObjectMetadata defines objectMeta for additional service.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"ServiceSpec describes the attributes that a user creates on a service.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"useAsDefault\": {\n \"description\": \"UseAsDefault applies changes from given service definition to the main object Service\\nChanging from headless service to clusterIP or loadbalancer may break cross-component communication\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe that will be added to CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"TerminationGracePeriodSeconds period for container graceful termination\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tlsConfig\": {\n \"description\": \"TLSConfig specifies TLSConfig configuration parameters.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints embedded kubernetes pod configuration option,\\ncontrols how pods are spread across your cluster among failure-domains\\nsuch as regions, zones, nodes, and other user-defined topology domains\\nhttps://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"format\": \"textarea\",\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"unauthorizedAccessConfig\": {\n \"description\": \"UnauthorizedAccessConfig configures access for un authorized users\",\n \"items\": {\n \"properties\": {\n \"discover_backend_ips\": {\n \"description\": \"DiscoverBackendIPs instructs discovering URLPrefix backend IPs via DNS.\",\n \"type\": \"boolean\"\n },\n \"drop_src_path_prefix_parts\": {\n \"description\": \"DropSrcPathPrefixParts is the number of `/`-delimited request path prefix parts to drop before proxying the request to backend.\\nSee [here](https://docs.victoriametrics.com/vmauth#dropping-request-path-prefix) for more details.\",\n \"type\": \"integer\"\n },\n \"headers\": {\n \"description\": \"RequestHeaders represent additional http headers, that vmauth uses\\nin form of [\\\"header_key: header_value\\\"]\\nmultiple values for header key:\\n[\\\"header_key: value1,value2\\\"]\\nit's available since 1.68.0 version of vmauth\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"load_balancing_policy\": {\n \"description\": \"LoadBalancingPolicy defines load balancing policy to use for backend urls.\\nSupported policies: least_loaded, first_available.\\nSee [here](https://docs.victoriametrics.com/vmauth#load-balancing) for more details (default \\\"least_loaded\\\")\",\n \"enum\": [\n \"least_loaded\",\n \"first_available\"\n ],\n \"type\": \"string\"\n },\n \"response_headers\": {\n \"description\": \"ResponseHeaders represent additional http headers, that vmauth adds for request response\\nin form of [\\\"header_key: header_value\\\"]\\nmultiple values for header key:\\n[\\\"header_key: value1,value2\\\"]\\nit's available since 1.93.0 version of vmauth\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"retry_status_codes\": {\n \"description\": \"RetryStatusCodes defines http status codes in numeric format for request retries\\nCan be defined per target or at VMUser.spec level\\ne.g. [429,503]\",\n \"items\": {\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"src_headers\": {\n \"description\": \"SrcHeaders is an optional list of headers, which must match request headers.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"src_hosts\": {\n \"description\": \"SrcHosts is an optional list of regular expressions, which must match the request hostname.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"src_paths\": {\n \"description\": \"SrcPaths is an optional list of regular expressions, which must match the request path.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"src_query_args\": {\n \"description\": \"SrcQueryArgs is an optional list of query args, which must match request URL query args.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"url_prefix\": {\n \"description\": \"UrlPrefix contains backend url prefixes for the proxied request url.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"useStrictSecurity\": {\n \"description\": \"UseStrictSecurity enables strict security mode for component\\nit restricts disk writes access\\nuses non-root user out of the box\\ndrops not needed security permissions\",\n \"type\": \"boolean\"\n },\n \"userNamespaceSelector\": {\n \"description\": \"UserNamespaceSelector Namespaces to be selected for VMAuth discovery.\\nWorks in combination with Selector.\\nNamespaceSelector nil - only objects at VMAuth namespace.\\nSelector nil - only objects at NamespaceSelector namespaces.\\nIf both nil - behaviour controlled by selectAllByDefault\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"userSelector\": {\n \"description\": \"UserSelector defines VMUser to be selected for config file generation.\\nWorks in combination with NamespaceSelector.\\nNamespaceSelector nil - only objects at VMAuth namespace.\\nIf both nil - behaviour controlled by selectAllByDefault\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeMounts\": {\n \"description\": \"VolumeMounts allows configuration of additional VolumeMounts on the output Deployment definition.\\nVolumeMounts specified will be appended to other VolumeMounts in the VMAuth container,\\nthat are generated as a result of StorageSpec objects.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"description\": \"Volumes allows configuration of additional volumes on the output deploy definition.\\nVolumes specified will be appended to other volumes that are generated as a result of\\nStorageSpec objects.\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"VM Auth\",\n \"type\": \"object\"\n}", + "version": "operator.victoriametrics.com/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "VM Auth", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz" + }, + "model": { + "category": { + "name": "Observability and Analysis" + }, + "displayName": "Victoria Metrics K8S Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0_36_80\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003c/svg\u003e" + }, + "model": { + "version": "0.25.8" + }, + "name": "victoria-metrics-k8s-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Monitoring", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"18\" height=\"18\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0_36_80\"\u003e\n\u003crect width=\"32\" height=\"32\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMCluster.json b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMCluster.json new file mode 100644 index 00000000000..2b42a74878c --- /dev/null +++ b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMCluster.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "VMCluster", + "schema": "{\n \"description\": \"VMCluster is fast, cost-effective and scalable time-series database.\\nCluster version with\",\n \"properties\": {\n \"spec\": {\n \"description\": \"VMClusterSpec defines the desired state of VMCluster\",\n \"properties\": {\n \"clusterVersion\": {\n \"description\": \"ClusterVersion defines default images tag for all components.\\nit can be overwritten with component specific image.tag value.\",\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets An optional list of references to secrets in the same namespace\\nto use for pulling images from registries\\nsee https://kubernetes.io/docs/concepts/containers/images/#referring-to-an-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"license\": {\n \"description\": \"License allows to configure license key to be used for enterprise features.\\nUsing license key is supported starting from VictoriaMetrics v1.94.0.\\nSee [here](https://docs.victoriametrics.com/enterprise)\",\n \"properties\": {\n \"key\": {\n \"description\": \"Enterprise license key. This flag is available only in [VictoriaMetrics enterprise](https://docs.victoriametrics.com/enterprise).\\nTo request a trial license, [go to](https://victoriametrics.com/products/enterprise/trial)\",\n \"type\": \"string\"\n },\n \"keyRef\": {\n \"description\": \"KeyRef is reference to secret with license key for enterprise features.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"paused\": {\n \"description\": \"Paused If set to true all actions on the underlying managed objects are not\\ngoing to be performed, except for delete actions.\",\n \"type\": \"boolean\"\n },\n \"replicationFactor\": {\n \"description\": \"ReplicationFactor defines how many copies of data make among\\ndistinct storage nodes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"retentionPeriod\": {\n \"description\": \"RetentionPeriod for the stored metrics\\nNote VictoriaMetrics has data/ and indexdb/ folders\\nmetrics from data/ removed eventually as soon as partition leaves retention period\\nreverse index data at indexdb rotates once at the half of configured\\n[retention period](https://docs.victoriametrics.com/Single-server-VictoriaMetrics/#retention)\",\n \"type\": \"string\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run the\\nVMSelect, VMStorage and VMInsert Pods.\",\n \"type\": \"string\"\n },\n \"useStrictSecurity\": {\n \"description\": \"UseStrictSecurity enables strict security mode for component\\nit restricts disk writes access\\nuses non-root user out of the box\\ndrops not needed security permissions\",\n \"type\": \"boolean\"\n },\n \"vminsert\": {\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity If specified, the pod's scheduling constraints.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"clusterNativeListenPort\": {\n \"description\": \"ClusterNativePort for multi-level cluster setup.\\nMore [details](https://docs.victoriametrics.com/Cluster-VictoriaMetrics#multi-level-cluster-setup)\",\n \"type\": \"string\"\n },\n \"configMaps\": {\n \"description\": \"ConfigMaps is a list of ConfigMaps in the same namespace as the VMInsert\\nobject, which shall be mounted into the VMInsert Pods.\\nThe ConfigMaps are mounted into /etc/vm/configs/\\u003cconfigmap-name\\u003e.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"containers\": {\n \"description\": \"Containers property allows to inject additions sidecars or to patch existing containers.\\nIt can be useful for proxies, backup, etc.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"items\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"DNSPolicy sets DNS policy for the pod\",\n \"type\": \"string\"\n },\n \"extraArgs\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"extraEnvs\": {\n \"description\": \"ExtraEnvs that will be added to VMInsert pod\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"format\": \"textarea\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hostNetwork\": {\n \"description\": \"HostNetwork controls whether the pod may use the node network namespace\",\n \"type\": \"boolean\"\n },\n \"hpa\": {\n \"description\": \"HPA defines kubernetes PodAutoScaling configuration version 2.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"Image - docker image settings for VMInsert\",\n \"properties\": {\n \"pullPolicy\": {\n \"description\": \"PullPolicy describes how to pull docker image\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"Repository contains name of docker image + it's repository if needed\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"description\": \"Tag contains desired docker image version\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"initContainers\": {\n \"description\": \"InitContainers allows adding initContainers to the pod definition. Those can be used to e.g.\\nfetch secrets for injection into the VMInsert configuration from external sources. Any\\nerrors 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/\\nUsing initContainers for any use case other then secret fetching is entirely outside the scope\\nof what the maintainers will support and by doing so, you accept that this behaviour may break\\nat any time without notice.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"insertPorts\": {\n \"description\": \"InsertPorts - additional listen ports for data ingestion.\",\n \"properties\": {\n \"graphitePort\": {\n \"description\": \"GraphitePort listen port\",\n \"type\": \"string\"\n },\n \"influxPort\": {\n \"description\": \"InfluxPort listen port\",\n \"type\": \"string\"\n },\n \"openTSDBHTTPPort\": {\n \"description\": \"OpenTSDBHTTPPort for http connections.\",\n \"type\": \"string\"\n },\n \"openTSDBPort\": {\n \"description\": \"OpenTSDBPort for tcp and udp listen\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"LivenessProbe that will be added CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"logFormat\": {\n \"description\": \"LogFormat for VMInsert to be configured with.\\ndefault or json\",\n \"enum\": [\n \"default\",\n \"json\"\n ],\n \"type\": \"string\"\n },\n \"logLevel\": {\n \"description\": \"LogLevel for VMInsert to be configured with.\",\n \"enum\": [\n \"INFO\",\n \"WARN\",\n \"ERROR\",\n \"FATAL\",\n \"PANIC\"\n ],\n \"type\": \"string\"\n },\n \"minReadySeconds\": {\n \"description\": \"MinReadySeconds defines a minim number os seconds to wait before starting update next pod\\nif previous in healthy state\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector Define which Nodes the Pods are scheduled on.\",\n \"type\": \"object\"\n },\n \"podDisruptionBudget\": {\n \"description\": \"PodDisruptionBudget created by operator\",\n \"properties\": {\n \"maxUnavailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"An eviction is allowed if at most \\\"maxUnavailable\\\" pods selected by\\n\\\"selector\\\" are unavailable after the eviction, i.e. even in absence of\\nthe evicted pod. For example, one can prevent all voluntary evictions\\nby specifying 0. This is a mutually exclusive setting with \\\"minAvailable\\\".\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minAvailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"An eviction is allowed if at least \\\"minAvailable\\\" pods selected by\\n\\\"selector\\\" will still be available after the eviction, i.e. even in the\\nabsence of the evicted pod. So for example you can prevent all voluntary\\nevictions by specifying \\\"100%\\\".\",\n \"x-kubernetes-int-or-string\": true\n },\n \"selectorLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"replaces default labels selector generated by operator\\nit's useful when you need to create custom budget\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"podMetadata\": {\n \"description\": \"PodMetadata configures Labels and Annotations which are propagated to the VMInsert pods.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"port\": {\n \"description\": \"Port listen port\",\n \"type\": \"string\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class assigned to the Pods\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"ReadinessGates defines pod readiness gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readinessProbe\": {\n \"description\": \"ReadinessProbe that will be added CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replicaCount\": {\n \"description\": \"ReplicaCount is the expected size of the VMInsert cluster. The controller will\\neventually make the size of the running cluster equal to the expected\\nsize.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"resources\": {\n \"description\": \"Resources container resource request and limits, https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"revisionHistoryLimitCount\": {\n \"description\": \"The number of old ReplicaSets to retain to allow rollback in deployment or\\nmaximum number of revisions that will be maintained in the StatefulSet's revision history.\\nDefaults to 10.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"rollingUpdate\": {\n \"description\": \"RollingUpdate - overrides deployment update params.\",\n \"properties\": {\n \"maxSurge\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"The maximum number of pods that can be scheduled above the desired number of\\npods.\\nValue can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).\\nThis can not be 0 if MaxUnavailable is 0.\\nAbsolute number is calculated from percentage by rounding up.\\nDefaults to 25%.\\nExample: when this is set to 30%, the new ReplicaSet can be scaled up immediately when\\nthe rolling update starts, such that the total number of old and new pods do not exceed\\n130% of desired pods. Once old pods have been killed,\\nnew ReplicaSet can be scaled up further, ensuring that total number of pods running\\nat any time during the update is at most 130% of desired pods.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxUnavailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"The maximum number of pods that can be unavailable during the update.\\nValue can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).\\nAbsolute number is calculated from percentage by rounding down.\\nThis can not be 0 if MaxSurge is 0.\\nDefaults to 25%.\\nExample: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods\\nimmediately when the rolling update starts. Once new pods are ready, old ReplicaSet\\ncan be scaled down further, followed by scaling up the new ReplicaSet, ensuring\\nthat the total number of pods available at all times during the update is at\\nleast 70% of desired pods.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName - defines runtime class for kubernetes pod.\\nhttps://kubernetes.io/docs/concepts/containers/runtime-class/\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"SchedulerName - defines kubernetes scheduler name\",\n \"type\": \"string\"\n },\n \"secrets\": {\n \"description\": \"Secrets is a list of Secrets in the same namespace as the VMInsert\\nobject, which shall be mounted into the VMInsert Pods.\\nThe Secrets are mounted into /etc/vm/secrets/\\u003csecret-name\\u003e.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nThis defaults to the default PodSecurityContext.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"serviceScrapeSpec\": {\n \"description\": \"ServiceScrapeSpec that will be added to vminsert VMServiceScrape spec\",\n \"format\": \"textarea\",\n \"required\": [\n \"endpoints\"\n ],\n \"type\": \"string\"\n },\n \"serviceSpec\": {\n \"description\": \"ServiceSpec that will be added to vminsert service spec\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"EmbeddedObjectMetadata defines objectMeta for additional service.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"ServiceSpec describes the attributes that a user creates on a service.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"useAsDefault\": {\n \"description\": \"UseAsDefault applies changes from given service definition to the main object Service\\nChanging from headless service to clusterIP or loadbalancer may break cross-component communication\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe that will be added to CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"TerminationGracePeriodSeconds period for container graceful termination\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints embedded kubernetes pod configuration option,\\ncontrols how pods are spread across your cluster among failure-domains\\nsuch as regions, zones, nodes, and other user-defined topology domains\\nhttps://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"format\": \"textarea\",\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"updateStrategy\": {\n \"description\": \"UpdateStrategy - overrides default update strategy.\",\n \"enum\": [\n \"Recreate\",\n \"RollingUpdate\"\n ],\n \"type\": \"string\"\n },\n \"volumeMounts\": {\n \"description\": \"VolumeMounts allows configuration of additional VolumeMounts on the output Deployment definition.\\nVolumeMounts specified will be appended to other VolumeMounts in the VMInsert container,\\nthat are generated as a result of StorageSpec objects.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"description\": \"Volumes allows configuration of additional volumes on the output Deployment definition.\\nVolumes specified will be appended to other volumes that are generated as a result of\\nStorageSpec objects.\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"replicaCount\"\n ],\n \"type\": \"object\"\n },\n \"vmselect\": {\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity If specified, the pod's scheduling constraints.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"cacheMountPath\": {\n \"description\": \"CacheMountPath allows to add cache persistent for VMSelect,\\nwill use \\\"/cache\\\" as default if not specified.\",\n \"type\": \"string\"\n },\n \"claimTemplates\": {\n \"description\": \"ClaimTemplates allows adding additional VolumeClaimTemplates for StatefulSet\",\n \"items\": {\n \"description\": \"PersistentVolumeClaim is a user's request for and claim to a persistent volume\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"APIVersion defines the versioned schema of this representation of an object.\\nServers should convert recognized schemas to the latest internal value, and\\nmay reject unrecognized values.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is a string value representing the REST resource this object represents.\\nServers may infer this from the endpoint the client submits requests to.\\nCannot be updated.\\nIn CamelCase.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"Standard object's metadata.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"spec\": {\n \"description\": \"spec defines the desired characteristics of a volume requested by a pod author.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"status\": {\n \"description\": \"status represents the current information/status of a persistent volume claim.\\nRead-only.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the actual access modes the volume backing the PVC has.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"allocatedResourceStatuses\": {\n \"additionalProperties\": {\n \"description\": \"When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource\\nthat it does not recognizes, then it should ignore that update and let other controllers\\nhandle it.\",\n \"type\": \"string\"\n },\n \"description\": \"allocatedResourceStatuses stores status of resource being resized for the given PVC.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\n\\nClaimResourceStatus can be in any of following states:\\n\\t- ControllerResizeInProgress:\\n\\t\\tState set when resize controller starts resizing the volume in control-plane.\\n\\t- ControllerResizeFailed:\\n\\t\\tState set when resize has failed in resize controller with a terminal error.\\n\\t- NodeResizePending:\\n\\t\\tState set when resize controller has finished resizing the volume but further resizing of\\n\\t\\tvolume is needed on the node.\\n\\t- NodeResizeInProgress:\\n\\t\\tState set when kubelet starts resizing the volume.\\n\\t- NodeResizeFailed:\\n\\t\\tState set when resizing has failed in kubelet with a terminal error. Transient errors don't set\\n\\t\\tNodeResizeFailed.\\nFor example: if expanding a PVC for more capacity - this field can be one of the following states:\\n\\t- pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeInProgress\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeFailed\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizePending\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeInProgress\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeFailed\\\"\\nWhen this field is not set, it means that no resize operation is in progress for the given PVC.\\n\\n\\nA controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\\n\\n\\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"granular\"\n },\n \"allocatedResources\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"allocatedResources tracks the resources allocated to a PVC including its capacity.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\n\\nCapacity reported here may be larger than the actual capacity when a volume expansion operation\\nis requested.\\nFor storage quota, the larger value from allocatedResources and PVC.spec.resources is used.\\nIf allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.\\nIf a volume expansion capacity request is lowered, allocatedResources is only\\nlowered if there are no expansion operations in progress and if the actual volume capacity\\nis equal or lower than the requested capacity.\\n\\n\\nA controller that receives PVC update with previously unknown resourceName\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\\n\\n\\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\"\n },\n \"capacity\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"capacity represents the actual resources of the underlying volume.\",\n \"type\": \"object\"\n },\n \"conditions\": {\n \"description\": \"conditions is the current Condition of persistent volume claim. If underlying persistent volume is being\\nresized then the Condition will be set to 'Resizing'.\",\n \"items\": {\n \"description\": \"PersistentVolumeClaimCondition contains details about state of pvc\",\n \"properties\": {\n \"lastProbeTime\": {\n \"description\": \"lastProbeTime is the time we probed the condition.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"lastTransitionTime\": {\n \"description\": \"lastTransitionTime is the time the condition transitioned from one status to another.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"message is the human-readable message indicating details about last transition.\",\n \"type\": \"string\"\n },\n \"reason\": {\n \"description\": \"reason is a unique, this should be a short, machine understandable string that gives the reason\\nfor condition's last transition. If it reports \\\"Resizing\\\" that means the underlying\\npersistent volume is being resized.\",\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"type\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"currentVolumeAttributesClassName\": {\n \"description\": \"currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.\\nWhen unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim\\nThis is an alpha field and requires enabling VolumeAttributesClass feature.\",\n \"type\": \"string\"\n },\n \"modifyVolumeStatus\": {\n \"description\": \"ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.\\nWhen this is unset, there is no ModifyVolume operation being attempted.\\nThis is an alpha field and requires enabling VolumeAttributesClass feature.\",\n \"properties\": {\n \"status\": {\n \"description\": \"status is the status of the ControllerModifyVolume operation. It can be in any of following states:\\n - Pending\\n Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as\\n the specified VolumeAttributesClass not existing.\\n - InProgress\\n InProgress indicates that the volume is being modified.\\n - Infeasible\\n Infeasible indicates that the request has been rejected as invalid by the CSI driver. To\\n\\t resolve the error, a valid VolumeAttributesClass needs to be specified.\\nNote: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.\",\n \"type\": \"string\"\n },\n \"targetVolumeAttributesClassName\": {\n \"description\": \"targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"phase\": {\n \"description\": \"phase represents the current phase of PersistentVolumeClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"clusterNativeListenPort\": {\n \"description\": \"ClusterNativePort for multi-level cluster setup.\\nMore [details](https://docs.victoriametrics.com/Cluster-VictoriaMetrics#multi-level-cluster-setup)\",\n \"type\": \"string\"\n },\n \"configMaps\": {\n \"description\": \"ConfigMaps is a list of ConfigMaps in the same namespace as the VMSelect\\nobject, which shall be mounted into the VMSelect Pods.\\nThe ConfigMaps are mounted into /etc/vm/configs/\\u003cconfigmap-name\\u003e.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"containers\": {\n \"description\": \"Containers property allows to inject additions sidecars or to patch existing containers.\\nIt can be useful for proxies, backup, etc.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"items\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"DNSPolicy sets DNS policy for the pod\",\n \"type\": \"string\"\n },\n \"extraArgs\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"extraEnvs\": {\n \"description\": \"ExtraEnvs that will be added to VMSelect pod\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"format\": \"textarea\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hostNetwork\": {\n \"description\": \"HostNetwork controls whether the pod may use the node network namespace\",\n \"type\": \"boolean\"\n },\n \"hpa\": {\n \"description\": \"Configures horizontal pod autoscaling.\\nNote, enabling this option disables vmselect to vmselect communication. In most cases it's not an issue.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"Image - docker image settings for VMSelect\",\n \"properties\": {\n \"pullPolicy\": {\n \"description\": \"PullPolicy describes how to pull docker image\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"Repository contains name of docker image + it's repository if needed\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"description\": \"Tag contains desired docker image version\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"initContainers\": {\n \"description\": \"InitContainers allows adding initContainers to the pod definition. Those can be used to e.g.\\nfetch secrets for injection into the VMSelect configuration from external sources. Any\\nerrors 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/\\nUsing initContainers for any use case other then secret fetching is entirely outside the scope\\nof what the maintainers will support and by doing so, you accept that this behaviour may break\\nat any time without notice.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"livenessProbe\": {\n \"description\": \"LivenessProbe that will be added CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"logFormat\": {\n \"description\": \"LogFormat for VMSelect to be configured with.\\ndefault or json\",\n \"enum\": [\n \"default\",\n \"json\"\n ],\n \"type\": \"string\"\n },\n \"logLevel\": {\n \"description\": \"LogLevel for VMSelect to be configured with.\",\n \"enum\": [\n \"INFO\",\n \"WARN\",\n \"ERROR\",\n \"FATAL\",\n \"PANIC\"\n ],\n \"type\": \"string\"\n },\n \"minReadySeconds\": {\n \"description\": \"MinReadySeconds defines a minim number os seconds to wait before starting update next pod\\nif previous in healthy state\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector Define which Nodes the Pods are scheduled on.\",\n \"type\": \"object\"\n },\n \"persistentVolume\": {\n \"description\": \"Storage - add persistent volume for cacheMountPath\\nits useful for persistent cache\\nuse storage instead of persistentVolume.\",\n \"properties\": {\n \"disableMountSubPath\": {\n \"description\": \"Deprecated: subPath usage will be disabled by default in a future release, this option will become unnecessary.\\nDisableMountSubPath allows to remove any subPath usage in volume mounts.\",\n \"type\": \"boolean\"\n },\n \"emptyDir\": {\n \"description\": \"EmptyDirVolumeSource to be used by the Prometheus StatefulSets. If specified, used in place of any volumeClaimTemplate. More\\ninfo: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"A PVC spec to be used by the VMAlertManager StatefulSets.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"podDisruptionBudget\": {\n \"description\": \"PodDisruptionBudget created by operator\",\n \"properties\": {\n \"maxUnavailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"An eviction is allowed if at most \\\"maxUnavailable\\\" pods selected by\\n\\\"selector\\\" are unavailable after the eviction, i.e. even in absence of\\nthe evicted pod. For example, one can prevent all voluntary evictions\\nby specifying 0. This is a mutually exclusive setting with \\\"minAvailable\\\".\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minAvailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"An eviction is allowed if at least \\\"minAvailable\\\" pods selected by\\n\\\"selector\\\" will still be available after the eviction, i.e. even in the\\nabsence of the evicted pod. So for example you can prevent all voluntary\\nevictions by specifying \\\"100%\\\".\",\n \"x-kubernetes-int-or-string\": true\n },\n \"selectorLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"replaces default labels selector generated by operator\\nit's useful when you need to create custom budget\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"podMetadata\": {\n \"description\": \"PodMetadata configures Labels and Annotations which are propagated to the VMSelect pods.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"port\": {\n \"description\": \"Port listen port\",\n \"type\": \"string\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class assigned to the Pods\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"ReadinessGates defines pod readiness gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readinessProbe\": {\n \"description\": \"ReadinessProbe that will be added CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replicaCount\": {\n \"description\": \"ReplicaCount is the expected size of the VMSelect cluster. The controller will\\neventually make the size of the running cluster equal to the expected\\nsize.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"resources\": {\n \"description\": \"Resources container resource request and limits, https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"revisionHistoryLimitCount\": {\n \"description\": \"The number of old ReplicaSets to retain to allow rollback in deployment or\\nmaximum number of revisions that will be maintained in the StatefulSet's revision history.\\nDefaults to 10.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"rollingUpdateStrategy\": {\n \"description\": \"RollingUpdateStrategy defines strategy for application updates\\nDefault is OnDelete, in this case operator handles update process\\nCan be changed for RollingUpdate\",\n \"type\": \"string\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName - defines runtime class for kubernetes pod.\\nhttps://kubernetes.io/docs/concepts/containers/runtime-class/\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"SchedulerName - defines kubernetes scheduler name\",\n \"type\": \"string\"\n },\n \"secrets\": {\n \"description\": \"Secrets is a list of Secrets in the same namespace as the VMSelect\\nobject, which shall be mounted into the VMSelect Pods.\\nThe Secrets are mounted into /etc/vm/secrets/\\u003csecret-name\\u003e.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nThis defaults to the default PodSecurityContext.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"serviceScrapeSpec\": {\n \"description\": \"ServiceScrapeSpec that will be added to vmselect VMServiceScrape spec\",\n \"format\": \"textarea\",\n \"required\": [\n \"endpoints\"\n ],\n \"type\": \"string\"\n },\n \"serviceSpec\": {\n \"description\": \"ServiceSpec that will be added to vmselect service spec\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"EmbeddedObjectMetadata defines objectMeta for additional service.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"ServiceSpec describes the attributes that a user creates on a service.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"useAsDefault\": {\n \"description\": \"UseAsDefault applies changes from given service definition to the main object Service\\nChanging from headless service to clusterIP or loadbalancer may break cross-component communication\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe that will be added to CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"storage\": {\n \"description\": \"StorageSpec - add persistent volume claim for cacheMountPath\\nits needed for persistent cache\",\n \"properties\": {\n \"disableMountSubPath\": {\n \"description\": \"Deprecated: subPath usage will be disabled by default in a future release, this option will become unnecessary.\\nDisableMountSubPath allows to remove any subPath usage in volume mounts.\",\n \"type\": \"boolean\"\n },\n \"emptyDir\": {\n \"description\": \"EmptyDirVolumeSource to be used by the Prometheus StatefulSets. If specified, used in place of any volumeClaimTemplate. More\\ninfo: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"A PVC spec to be used by the VMAlertManager StatefulSets.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"APIVersion defines the versioned schema of this representation of an object.\\nServers should convert recognized schemas to the latest internal value, and\\nmay reject unrecognized values.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is a string value representing the REST resource this object represents.\\nServers may infer this from the endpoint the client submits requests to.\\nCannot be updated.\\nIn CamelCase.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"EmbeddedMetadata contains metadata relevant to an EmbeddedResource.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Spec defines the desired characteristics of a volume requested by a pod author.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"status\": {\n \"description\": \"Status represents the current information/status of a persistent volume claim.\\nRead-only.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the actual access modes the volume backing the PVC has.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"allocatedResourceStatuses\": {\n \"additionalProperties\": {\n \"description\": \"When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource\\nthat it does not recognizes, then it should ignore that update and let other controllers\\nhandle it.\",\n \"type\": \"string\"\n },\n \"description\": \"allocatedResourceStatuses stores status of resource being resized for the given PVC.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\n\\nClaimResourceStatus can be in any of following states:\\n\\t- ControllerResizeInProgress:\\n\\t\\tState set when resize controller starts resizing the volume in control-plane.\\n\\t- ControllerResizeFailed:\\n\\t\\tState set when resize has failed in resize controller with a terminal error.\\n\\t- NodeResizePending:\\n\\t\\tState set when resize controller has finished resizing the volume but further resizing of\\n\\t\\tvolume is needed on the node.\\n\\t- NodeResizeInProgress:\\n\\t\\tState set when kubelet starts resizing the volume.\\n\\t- NodeResizeFailed:\\n\\t\\tState set when resizing has failed in kubelet with a terminal error. Transient errors don't set\\n\\t\\tNodeResizeFailed.\\nFor example: if expanding a PVC for more capacity - this field can be one of the following states:\\n\\t- pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeInProgress\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeFailed\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizePending\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeInProgress\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeFailed\\\"\\nWhen this field is not set, it means that no resize operation is in progress for the given PVC.\\n\\n\\nA controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\\n\\n\\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"granular\"\n },\n \"allocatedResources\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"allocatedResources tracks the resources allocated to a PVC including its capacity.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\n\\nCapacity reported here may be larger than the actual capacity when a volume expansion operation\\nis requested.\\nFor storage quota, the larger value from allocatedResources and PVC.spec.resources is used.\\nIf allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.\\nIf a volume expansion capacity request is lowered, allocatedResources is only\\nlowered if there are no expansion operations in progress and if the actual volume capacity\\nis equal or lower than the requested capacity.\\n\\n\\nA controller that receives PVC update with previously unknown resourceName\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\\n\\n\\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\"\n },\n \"capacity\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"capacity represents the actual resources of the underlying volume.\",\n \"type\": \"object\"\n },\n \"conditions\": {\n \"description\": \"conditions is the current Condition of persistent volume claim. If underlying persistent volume is being\\nresized then the Condition will be set to 'Resizing'.\",\n \"items\": {\n \"description\": \"PersistentVolumeClaimCondition contains details about state of pvc\",\n \"properties\": {\n \"lastProbeTime\": {\n \"description\": \"lastProbeTime is the time we probed the condition.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"lastTransitionTime\": {\n \"description\": \"lastTransitionTime is the time the condition transitioned from one status to another.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"message is the human-readable message indicating details about last transition.\",\n \"type\": \"string\"\n },\n \"reason\": {\n \"description\": \"reason is a unique, this should be a short, machine understandable string that gives the reason\\nfor condition's last transition. If it reports \\\"Resizing\\\" that means the underlying\\npersistent volume is being resized.\",\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"type\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"currentVolumeAttributesClassName\": {\n \"description\": \"currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.\\nWhen unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim\\nThis is an alpha field and requires enabling VolumeAttributesClass feature.\",\n \"type\": \"string\"\n },\n \"modifyVolumeStatus\": {\n \"description\": \"ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.\\nWhen this is unset, there is no ModifyVolume operation being attempted.\\nThis is an alpha field and requires enabling VolumeAttributesClass feature.\",\n \"properties\": {\n \"status\": {\n \"description\": \"status is the status of the ControllerModifyVolume operation. It can be in any of following states:\\n - Pending\\n Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as\\n the specified VolumeAttributesClass not existing.\\n - InProgress\\n InProgress indicates that the volume is being modified.\\n - Infeasible\\n Infeasible indicates that the request has been rejected as invalid by the CSI driver. To\\n\\t resolve the error, a valid VolumeAttributesClass needs to be specified.\\nNote: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.\",\n \"type\": \"string\"\n },\n \"targetVolumeAttributesClassName\": {\n \"description\": \"targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"phase\": {\n \"description\": \"phase represents the current phase of PersistentVolumeClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"TerminationGracePeriodSeconds period for container graceful termination\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints embedded kubernetes pod configuration option,\\ncontrols how pods are spread across your cluster among failure-domains\\nsuch as regions, zones, nodes, and other user-defined topology domains\\nhttps://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"format\": \"textarea\",\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"VolumeMounts allows configuration of additional VolumeMounts on the output Deployment definition.\\nVolumeMounts specified will be appended to other VolumeMounts in the VMSelect container,\\nthat are generated as a result of StorageSpec objects.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"description\": \"Volumes allows configuration of additional volumes on the output Deployment definition.\\nVolumes specified will be appended to other volumes that are generated as a result of\\nStorageSpec objects.\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"replicaCount\"\n ],\n \"type\": \"object\"\n },\n \"vmstorage\": {\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity If specified, the pod's scheduling constraints.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"claimTemplates\": {\n \"description\": \"ClaimTemplates allows adding additional VolumeClaimTemplates for StatefulSet\",\n \"items\": {\n \"description\": \"PersistentVolumeClaim is a user's request for and claim to a persistent volume\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"APIVersion defines the versioned schema of this representation of an object.\\nServers should convert recognized schemas to the latest internal value, and\\nmay reject unrecognized values.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is a string value representing the REST resource this object represents.\\nServers may infer this from the endpoint the client submits requests to.\\nCannot be updated.\\nIn CamelCase.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"Standard object's metadata.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"spec\": {\n \"description\": \"spec defines the desired characteristics of a volume requested by a pod author.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"status\": {\n \"description\": \"status represents the current information/status of a persistent volume claim.\\nRead-only.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the actual access modes the volume backing the PVC has.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"allocatedResourceStatuses\": {\n \"additionalProperties\": {\n \"description\": \"When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource\\nthat it does not recognizes, then it should ignore that update and let other controllers\\nhandle it.\",\n \"type\": \"string\"\n },\n \"description\": \"allocatedResourceStatuses stores status of resource being resized for the given PVC.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\n\\nClaimResourceStatus can be in any of following states:\\n\\t- ControllerResizeInProgress:\\n\\t\\tState set when resize controller starts resizing the volume in control-plane.\\n\\t- ControllerResizeFailed:\\n\\t\\tState set when resize has failed in resize controller with a terminal error.\\n\\t- NodeResizePending:\\n\\t\\tState set when resize controller has finished resizing the volume but further resizing of\\n\\t\\tvolume is needed on the node.\\n\\t- NodeResizeInProgress:\\n\\t\\tState set when kubelet starts resizing the volume.\\n\\t- NodeResizeFailed:\\n\\t\\tState set when resizing has failed in kubelet with a terminal error. Transient errors don't set\\n\\t\\tNodeResizeFailed.\\nFor example: if expanding a PVC for more capacity - this field can be one of the following states:\\n\\t- pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeInProgress\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeFailed\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizePending\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeInProgress\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeFailed\\\"\\nWhen this field is not set, it means that no resize operation is in progress for the given PVC.\\n\\n\\nA controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\\n\\n\\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"granular\"\n },\n \"allocatedResources\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"allocatedResources tracks the resources allocated to a PVC including its capacity.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\n\\nCapacity reported here may be larger than the actual capacity when a volume expansion operation\\nis requested.\\nFor storage quota, the larger value from allocatedResources and PVC.spec.resources is used.\\nIf allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.\\nIf a volume expansion capacity request is lowered, allocatedResources is only\\nlowered if there are no expansion operations in progress and if the actual volume capacity\\nis equal or lower than the requested capacity.\\n\\n\\nA controller that receives PVC update with previously unknown resourceName\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\\n\\n\\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\"\n },\n \"capacity\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"capacity represents the actual resources of the underlying volume.\",\n \"type\": \"object\"\n },\n \"conditions\": {\n \"description\": \"conditions is the current Condition of persistent volume claim. If underlying persistent volume is being\\nresized then the Condition will be set to 'Resizing'.\",\n \"items\": {\n \"description\": \"PersistentVolumeClaimCondition contains details about state of pvc\",\n \"properties\": {\n \"lastProbeTime\": {\n \"description\": \"lastProbeTime is the time we probed the condition.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"lastTransitionTime\": {\n \"description\": \"lastTransitionTime is the time the condition transitioned from one status to another.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"message is the human-readable message indicating details about last transition.\",\n \"type\": \"string\"\n },\n \"reason\": {\n \"description\": \"reason is a unique, this should be a short, machine understandable string that gives the reason\\nfor condition's last transition. If it reports \\\"Resizing\\\" that means the underlying\\npersistent volume is being resized.\",\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"type\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"currentVolumeAttributesClassName\": {\n \"description\": \"currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.\\nWhen unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim\\nThis is an alpha field and requires enabling VolumeAttributesClass feature.\",\n \"type\": \"string\"\n },\n \"modifyVolumeStatus\": {\n \"description\": \"ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.\\nWhen this is unset, there is no ModifyVolume operation being attempted.\\nThis is an alpha field and requires enabling VolumeAttributesClass feature.\",\n \"properties\": {\n \"status\": {\n \"description\": \"status is the status of the ControllerModifyVolume operation. It can be in any of following states:\\n - Pending\\n Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as\\n the specified VolumeAttributesClass not existing.\\n - InProgress\\n InProgress indicates that the volume is being modified.\\n - Infeasible\\n Infeasible indicates that the request has been rejected as invalid by the CSI driver. To\\n\\t resolve the error, a valid VolumeAttributesClass needs to be specified.\\nNote: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.\",\n \"type\": \"string\"\n },\n \"targetVolumeAttributesClassName\": {\n \"description\": \"targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"phase\": {\n \"description\": \"phase represents the current phase of PersistentVolumeClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"configMaps\": {\n \"description\": \"ConfigMaps is a list of ConfigMaps in the same namespace as the VMStorage\\nobject, which shall be mounted into the VMStorage Pods.\\nThe ConfigMaps are mounted into /etc/vm/configs/\\u003cconfigmap-name\\u003e.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"containers\": {\n \"description\": \"Containers property allows to inject additions sidecars or to patch existing containers.\\nIt can be useful for proxies, backup, etc.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"items\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"DNSPolicy sets DNS policy for the pod\",\n \"type\": \"string\"\n },\n \"extraArgs\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"extraEnvs\": {\n \"description\": \"ExtraEnvs that will be added to VMStorage pod\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"format\": \"textarea\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hostNetwork\": {\n \"description\": \"HostNetwork controls whether the pod may use the node network namespace\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image - docker image settings for VMStorage\",\n \"properties\": {\n \"pullPolicy\": {\n \"description\": \"PullPolicy describes how to pull docker image\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"Repository contains name of docker image + it's repository if needed\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"description\": \"Tag contains desired docker image version\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"initContainers\": {\n \"description\": \"InitContainers allows adding initContainers to the pod definition. Those can be used to e.g.\\nfetch secrets for injection into the VMStorage configuration from external sources. Any\\nerrors 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/\\nUsing initContainers for any use case other then secret fetching is entirely outside the scope\\nof what the maintainers will support and by doing so, you accept that this behaviour may break\\nat any time without notice.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"livenessProbe\": {\n \"description\": \"LivenessProbe that will be added CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"logFormat\": {\n \"description\": \"LogFormat for VMStorage to be configured with.\\ndefault or json\",\n \"enum\": [\n \"default\",\n \"json\"\n ],\n \"type\": \"string\"\n },\n \"logLevel\": {\n \"description\": \"LogLevel for VMStorage to be configured with.\",\n \"enum\": [\n \"INFO\",\n \"WARN\",\n \"ERROR\",\n \"FATAL\",\n \"PANIC\"\n ],\n \"type\": \"string\"\n },\n \"maintenanceInsertNodeIDs\": {\n \"description\": \"MaintenanceInsertNodeIDs - excludes given node ids from insert requests routing, must contain pod suffixes - for pod-0, id will be 0 and etc.\\nlets say, you have pod-0, pod-1, pod-2, pod-3. to exclude pod-0 and pod-3 from insert routing, define nodeIDs: [0,3].\\nUseful at storage expanding, when you want to rebalance some data at cluster.\",\n \"items\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"maintenanceSelectNodeIDs\": {\n \"description\": \"MaintenanceInsertNodeIDs - excludes given node ids from select requests routing, must contain pod suffixes - for pod-0, id will be 0 and etc.\",\n \"items\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"minReadySeconds\": {\n \"description\": \"MinReadySeconds defines a minim number os seconds to wait before starting update next pod\\nif previous in healthy state\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector Define which Nodes the Pods are scheduled on.\",\n \"type\": \"object\"\n },\n \"podDisruptionBudget\": {\n \"description\": \"PodDisruptionBudget created by operator\",\n \"properties\": {\n \"maxUnavailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"An eviction is allowed if at most \\\"maxUnavailable\\\" pods selected by\\n\\\"selector\\\" are unavailable after the eviction, i.e. even in absence of\\nthe evicted pod. For example, one can prevent all voluntary evictions\\nby specifying 0. This is a mutually exclusive setting with \\\"minAvailable\\\".\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minAvailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"An eviction is allowed if at least \\\"minAvailable\\\" pods selected by\\n\\\"selector\\\" will still be available after the eviction, i.e. even in the\\nabsence of the evicted pod. So for example you can prevent all voluntary\\nevictions by specifying \\\"100%\\\".\",\n \"x-kubernetes-int-or-string\": true\n },\n \"selectorLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"replaces default labels selector generated by operator\\nit's useful when you need to create custom budget\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"podMetadata\": {\n \"description\": \"PodMetadata configures Labels and Annotations which are propagated to the VMStorage pods.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"port\": {\n \"description\": \"Port for health check connetions\",\n \"type\": \"string\"\n },\n \"priorityClassName\": {\n \"description\": \"Priority class assigned to the Pods\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"ReadinessGates defines pod readiness gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readinessProbe\": {\n \"description\": \"ReadinessProbe that will be added CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replicaCount\": {\n \"description\": \"ReplicaCount is the expected size of the VMStorage cluster. The controller will\\neventually make the size of the running cluster equal to the expected\\nsize.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"resources\": {\n \"description\": \"Resources container resource request and limits, https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"revisionHistoryLimitCount\": {\n \"description\": \"The number of old ReplicaSets to retain to allow rollback in deployment or\\nmaximum number of revisions that will be maintained in the StatefulSet's revision history.\\nDefaults to 10.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"rollingUpdateStrategy\": {\n \"description\": \"RollingUpdateStrategy defines strategy for application updates\\nDefault is OnDelete, in this case operator handles update process\\nCan be changed for RollingUpdate\",\n \"type\": \"string\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName - defines runtime class for kubernetes pod.\\nhttps://kubernetes.io/docs/concepts/containers/runtime-class/\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"SchedulerName - defines kubernetes scheduler name\",\n \"type\": \"string\"\n },\n \"secrets\": {\n \"description\": \"Secrets is a list of Secrets in the same namespace as the VMStorage\\nobject, which shall be mounted into the VMStorage Pods.\\nThe Secrets are mounted into /etc/vm/secrets/\\u003csecret-name\\u003e.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nThis defaults to the default PodSecurityContext.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"serviceScrapeSpec\": {\n \"description\": \"ServiceScrapeSpec that will be added to vmstorage VMServiceScrape spec\",\n \"format\": \"textarea\",\n \"required\": [\n \"endpoints\"\n ],\n \"type\": \"string\"\n },\n \"serviceSpec\": {\n \"description\": \"ServiceSpec that will be create additional service for vmstorage\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"EmbeddedObjectMetadata defines objectMeta for additional service.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"ServiceSpec describes the attributes that a user creates on a service.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"useAsDefault\": {\n \"description\": \"UseAsDefault applies changes from given service definition to the main object Service\\nChanging from headless service to clusterIP or loadbalancer may break cross-component communication\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe that will be added to CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"storage\": {\n \"description\": \"Storage - add persistent volume for StorageDataPath\\nits useful for persistent cache\",\n \"properties\": {\n \"disableMountSubPath\": {\n \"description\": \"Deprecated: subPath usage will be disabled by default in a future release, this option will become unnecessary.\\nDisableMountSubPath allows to remove any subPath usage in volume mounts.\",\n \"type\": \"boolean\"\n },\n \"emptyDir\": {\n \"description\": \"EmptyDirVolumeSource to be used by the Prometheus StatefulSets. If specified, used in place of any volumeClaimTemplate. More\\ninfo: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"A PVC spec to be used by the VMAlertManager StatefulSets.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageDataPath\": {\n \"description\": \"StorageDataPath - path to storage data\",\n \"type\": \"string\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"TerminationGracePeriodSeconds period for container graceful termination\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints embedded kubernetes pod configuration option,\\ncontrols how pods are spread across your cluster among failure-domains\\nsuch as regions, zones, nodes, and other user-defined topology domains\\nhttps://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"format\": \"textarea\",\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"vmBackup\": {\n \"description\": \"VMBackup configuration for backup\",\n \"properties\": {\n \"acceptEULA\": {\n \"description\": \"AcceptEULA accepts enterprise feature usage, must be set to true.\\notherwise backupmanager cannot be added to single/cluster version.\\nhttps://victoriametrics.com/legal/esa/\",\n \"type\": \"boolean\"\n },\n \"concurrency\": {\n \"description\": \"Defines number of concurrent workers. Higher concurrency may reduce backup duration (default 10)\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"credentialsSecret\": {\n \"description\": \"CredentialsSecret is secret in the same namespace for access to remote storage\\nThe secret is mounted into /etc/vm/creds.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"customS3Endpoint\": {\n \"description\": \"Custom S3 endpoint for use with S3-compatible storages (e.g. MinIO). S3 is used if not set\",\n \"type\": \"string\"\n },\n \"destination\": {\n \"description\": \"Defines destination for backup\",\n \"type\": \"string\"\n },\n \"destinationDisableSuffixAdd\": {\n \"description\": \"DestinationDisableSuffixAdd - disables suffix adding for cluster version backups\\neach vmstorage backup must have unique backup folder\\nso operator adds POD_NAME as suffix for backup destination folder.\",\n \"type\": \"boolean\"\n },\n \"disableDaily\": {\n \"description\": \"Defines if daily backups disabled (default false)\",\n \"type\": \"boolean\"\n },\n \"disableHourly\": {\n \"description\": \"Defines if hourly backups disabled (default false)\",\n \"type\": \"boolean\"\n },\n \"disableMonthly\": {\n \"description\": \"Defines if monthly backups disabled (default false)\",\n \"type\": \"boolean\"\n },\n \"disableWeekly\": {\n \"description\": \"Defines if weekly backups disabled (default false)\",\n \"type\": \"boolean\"\n },\n \"extraArgs\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"extra args like maxBytesPerSecond default 0\",\n \"type\": \"object\"\n },\n \"extraEnvs\": {\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Image - docker image settings for VMBackuper\",\n \"properties\": {\n \"pullPolicy\": {\n \"description\": \"PullPolicy describes how to pull docker image\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"Repository contains name of docker image + it's repository if needed\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"description\": \"Tag contains desired docker image version\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"logFormat\": {\n \"description\": \"LogFormat for VMBackup to be configured with.\\ndefault or json\",\n \"enum\": [\n \"default\",\n \"json\"\n ],\n \"type\": \"string\"\n },\n \"logLevel\": {\n \"description\": \"LogLevel for VMBackup to be configured with.\",\n \"enum\": [\n \"INFO\",\n \"WARN\",\n \"ERROR\",\n \"FATAL\",\n \"PANIC\"\n ],\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Port for health check connections\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resources container resource request and limits, https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\\nif not defined default resources from operator config will be used\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restore\": {\n \"description\": \"Restore Allows to enable restore options for pod\\nRead [more](https://docs.victoriametrics.com/vmbackupmanager#restore-commands)\",\n \"properties\": {\n \"onStart\": {\n \"description\": \"OnStart defines configuration for restore on pod start\",\n \"properties\": {\n \"enabled\": {\n \"description\": \"Enabled defines if restore on start enabled\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"snapshotCreateURL\": {\n \"description\": \"SnapshotCreateURL overwrites url for snapshot create\",\n \"type\": \"string\"\n },\n \"snapshotDeleteURL\": {\n \"description\": \"SnapShotDeleteURL overwrites url for snapshot delete\",\n \"type\": \"string\"\n },\n \"volumeMounts\": {\n \"description\": \"VolumeMounts allows configuration of additional VolumeMounts on the output Deployment definition.\\nVolumeMounts specified will be appended to other VolumeMounts in the vmbackupmanager container,\\nthat are generated as a result of StorageSpec objects.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"vmInsertPort\": {\n \"description\": \"VMInsertPort for VMInsert connections\",\n \"type\": \"string\"\n },\n \"vmSelectPort\": {\n \"description\": \"VMSelectPort for VMSelect connections\",\n \"type\": \"string\"\n },\n \"volumeMounts\": {\n \"description\": \"VolumeMounts allows configuration of additional VolumeMounts on the output Deployment definition.\\nVolumeMounts specified will be appended to other VolumeMounts in the VMStorage container,\\nthat are generated as a result of StorageSpec objects.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"description\": \"Volumes allows configuration of additional volumes on the output Deployment definition.\\nVolumes specified will be appended to other volumes that are generated as a result of\\nStorageSpec objects.\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"replicaCount\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"retentionPeriod\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"title\": \"VM Cluster\",\n \"type\": \"object\"\n}", + "version": "operator.victoriametrics.com/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "VM Cluster", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz" + }, + "model": { + "category": { + "name": "Observability and Analysis" + }, + "displayName": "Victoria Metrics K8S Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0_36_80\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003c/svg\u003e" + }, + "model": { + "version": "0.25.8" + }, + "name": "victoria-metrics-k8s-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Monitoring", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"18\" height=\"18\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0_36_80\"\u003e\n\u003crect width=\"32\" height=\"32\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMNodeScrape.json b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMNodeScrape.json new file mode 100644 index 00000000000..b189c769a77 --- /dev/null +++ b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMNodeScrape.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "VMNodeScrape", + "schema": "{\n \"description\": \"VMNodeScrape defines discovery for targets placed on kubernetes nodes,\\nusually its node-exporters and other host services.\\nInternalIP is used as __address__ for scraping.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"VMNodeScrapeSpec defines specification for VMNodeScrape.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization with http header Authorization\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Reference to the secret with value for authorization\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"credentialsFile\": {\n \"description\": \"File with value for authorization\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of authorization, default to bearer\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenFile\": {\n \"description\": \"File to read bearer token for scraping targets.\",\n \"type\": \"string\"\n },\n \"bearerTokenSecret\": {\n \"description\": \"Secret to mount to read bearer token for scraping targets. The secret\\nneeds to be in the same namespace as the scrape object and accessible by\\nthe victoria-metrics operator.\",\n \"nullable\": true,\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"follow_redirects\": {\n \"description\": \"FollowRedirects controls redirects for scraping.\",\n \"type\": \"boolean\"\n },\n \"honorLabels\": {\n \"description\": \"HonorLabels chooses the metric's labels on collisions with target labels.\",\n \"type\": \"boolean\"\n },\n \"honorTimestamps\": {\n \"description\": \"HonorTimestamps controls whether vmagent respects the timestamps present in scraped data.\",\n \"type\": \"boolean\"\n },\n \"interval\": {\n \"description\": \"Interval at which metrics should be scraped\",\n \"type\": \"string\"\n },\n \"jobLabel\": {\n \"description\": \"The label to use to retrieve the job name from.\",\n \"type\": \"string\"\n },\n \"max_scrape_size\": {\n \"description\": \"MaxScrapeSize defines a maximum size of scraped data for a job\",\n \"type\": \"string\"\n },\n \"metricRelabelConfigs\": {\n \"description\": \"MetricRelabelConfigs to apply to samples after scrapping.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 defines auth configuration\",\n \"properties\": {\n \"client_id\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"client_secret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"client_secret_file\": {\n \"description\": \"ClientSecretFile defines path for client secret file.\",\n \"type\": \"string\"\n },\n \"endpoint_params\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"token_url\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"client_id\",\n \"token_url\"\n ],\n \"type\": \"object\"\n },\n \"params\": {\n \"additionalProperties\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"description\": \"Optional HTTP URL parameters\",\n \"type\": \"object\"\n },\n \"path\": {\n \"description\": \"HTTP path to scrape for metrics.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Name of the port exposed at Node.\",\n \"type\": \"string\"\n },\n \"proxyURL\": {\n \"description\": \"ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint.\",\n \"type\": \"string\"\n },\n \"relabelConfigs\": {\n \"description\": \"RelabelConfigs to apply to samples during service discovery.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sampleLimit\": {\n \"description\": \"SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"scheme\": {\n \"description\": \"HTTP scheme to use for scraping.\",\n \"enum\": [\n \"http\",\n \"https\"\n ],\n \"type\": \"string\"\n },\n \"scrapeTimeout\": {\n \"description\": \"Timeout after which the scrape is ended\",\n \"type\": \"string\"\n },\n \"scrape_interval\": {\n \"description\": \"ScrapeInterval is the same as Interval and has priority over it.\\none of scrape_interval or interval can be used\",\n \"type\": \"string\"\n },\n \"selector\": {\n \"description\": \"Selector to select kubernetes Nodes.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"seriesLimit\": {\n \"description\": \"SeriesLimit defines per-scrape limit on number of unique time series\\na single target can expose during all the scrapes on the time window of 24h.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"targetLabels\": {\n \"description\": \"TargetLabels transfers labels on the Kubernetes Node onto the target.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tlsConfig\": {\n \"description\": \"TLSConfig configuration to use when scraping the endpoint\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vm_scrape_params\": {\n \"description\": \"VMScrapeParams defines VictoriaMetrics specific scrape parameters\",\n \"properties\": {\n \"disable_compression\": {\n \"description\": \"DisableCompression\",\n \"type\": \"boolean\"\n },\n \"disable_keep_alive\": {\n \"description\": \"disable_keepalive allows disabling HTTP keep-alive when scraping targets.\\nBy default, HTTP keep-alive is enabled, so TCP connections to scrape targets\\ncould be re-used.\\nSee https://docs.victoriametrics.com/vmagent#scrape_config-enhancements\",\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"description\": \"Headers allows sending custom headers to scrape targets\\nmust be in of semicolon separated header with it's value\\neg:\\nheaderName: headerValue\\nvmagent supports since 1.79.0 version\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"no_stale_markers\": {\n \"type\": \"boolean\"\n },\n \"proxy_client_config\": {\n \"description\": \"ProxyClientConfig configures proxy auth settings for scraping\\nSee feature description https://docs.victoriametrics.com/vmagent#scraping-targets-via-a-proxy\",\n \"properties\": {\n \"basic_auth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearer_token\": {\n \"description\": \"SecretKeySelector selects a key of a Secret.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"bearer_token_file\": {\n \"type\": \"string\"\n },\n \"tls_config\": {\n \"description\": \"TLSConfig specifies TLSConfig configuration parameters.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrape_align_interval\": {\n \"type\": \"string\"\n },\n \"scrape_offset\": {\n \"type\": \"string\"\n },\n \"stream_parse\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"VM Node Scrape\",\n \"type\": \"object\"\n}", + "version": "operator.victoriametrics.com/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "VM Node Scrape", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz" + }, + "model": { + "category": { + "name": "Observability and Analysis" + }, + "displayName": "Victoria Metrics K8S Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0_36_80\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003c/svg\u003e" + }, + "model": { + "version": "0.25.8" + }, + "name": "victoria-metrics-k8s-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Monitoring", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"18\" height=\"18\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0_36_80\"\u003e\n\u003crect width=\"32\" height=\"32\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMPodScrape.json b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMPodScrape.json new file mode 100644 index 00000000000..a5c70af1b01 --- /dev/null +++ b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMPodScrape.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "VMPodScrape", + "schema": "{\n \"description\": \"VMPodScrape is scrape configuration for pods,\\nit generates vmagent's config for scraping pod targets\\nbased on selectors.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"VMPodScrapeSpec defines the desired state of VMPodScrape\",\n \"properties\": {\n \"attach_metadata\": {\n \"description\": \"AttachMetadata configures metadata attaching from service discovery\",\n \"properties\": {\n \"node\": {\n \"description\": \"Node instructs vmagent to add node specific metadata from service discovery\\nValid for roles: pod, endpoints, endpointslice.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"jobLabel\": {\n \"description\": \"The label to use to retrieve the job name from.\",\n \"type\": \"string\"\n },\n \"namespaceSelector\": {\n \"description\": \"Selector to select which namespaces the Endpoints objects are discovered from.\",\n \"properties\": {\n \"any\": {\n \"description\": \"Boolean describing whether all namespaces are selected in contrast to a\\nlist restricting them.\",\n \"type\": \"boolean\"\n },\n \"matchNames\": {\n \"description\": \"List of namespace names.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podMetricsEndpoints\": {\n \"description\": \"A list of endpoints allowed as part of this PodMonitor.\",\n \"items\": {\n \"description\": \"PodMetricsEndpoint defines a scrapeable endpoint of a Kubernetes Pod serving metrics.\",\n \"properties\": {\n \"attach_metadata\": {\n \"description\": \"AttachMetadata configures metadata attaching from service discovery\",\n \"properties\": {\n \"node\": {\n \"description\": \"Node instructs vmagent to add node specific metadata from service discovery\\nValid for roles: pod, endpoints, endpointslice.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"authorization\": {\n \"description\": \"Authorization with http header Authorization\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Reference to the secret with value for authorization\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"credentialsFile\": {\n \"description\": \"File with value for authorization\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of authorization, default to bearer\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenFile\": {\n \"description\": \"File to read bearer token for scraping targets.\",\n \"type\": \"string\"\n },\n \"bearerTokenSecret\": {\n \"description\": \"Secret to mount to read bearer token for scraping targets. The secret\\nneeds to be in the same namespace as the scrape object and accessible by\\nthe victoria-metrics operator.\",\n \"nullable\": true,\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"filterRunning\": {\n \"description\": \"FilterRunning applies filter with pod status == running\\nit prevents from scrapping metrics at failed or succeed state pods.\\nenabled by default\",\n \"type\": \"boolean\"\n },\n \"follow_redirects\": {\n \"description\": \"FollowRedirects controls redirects for scraping.\",\n \"type\": \"boolean\"\n },\n \"honorLabels\": {\n \"description\": \"HonorLabels chooses the metric's labels on collisions with target labels.\",\n \"type\": \"boolean\"\n },\n \"honorTimestamps\": {\n \"description\": \"HonorTimestamps controls whether vmagent respects the timestamps present in scraped data.\",\n \"type\": \"boolean\"\n },\n \"interval\": {\n \"description\": \"Interval at which metrics should be scraped\",\n \"type\": \"string\"\n },\n \"max_scrape_size\": {\n \"description\": \"MaxScrapeSize defines a maximum size of scraped data for a job\",\n \"type\": \"string\"\n },\n \"metricRelabelConfigs\": {\n \"description\": \"MetricRelabelConfigs to apply to samples after scrapping.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 defines auth configuration\",\n \"properties\": {\n \"client_id\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"client_secret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"client_secret_file\": {\n \"description\": \"ClientSecretFile defines path for client secret file.\",\n \"type\": \"string\"\n },\n \"endpoint_params\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"token_url\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"client_id\",\n \"token_url\"\n ],\n \"type\": \"object\"\n },\n \"params\": {\n \"additionalProperties\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"description\": \"Optional HTTP URL parameters\",\n \"type\": \"object\"\n },\n \"path\": {\n \"description\": \"HTTP path to scrape for metrics.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Name of the port exposed at Pod.\",\n \"type\": \"string\"\n },\n \"proxyURL\": {\n \"description\": \"ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint.\",\n \"type\": \"string\"\n },\n \"relabelConfigs\": {\n \"description\": \"RelabelConfigs to apply to samples during service discovery.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sampleLimit\": {\n \"description\": \"SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"scheme\": {\n \"description\": \"HTTP scheme to use for scraping.\",\n \"enum\": [\n \"http\",\n \"https\"\n ],\n \"type\": \"string\"\n },\n \"scrapeTimeout\": {\n \"description\": \"Timeout after which the scrape is ended\",\n \"type\": \"string\"\n },\n \"scrape_interval\": {\n \"description\": \"ScrapeInterval is the same as Interval and has priority over it.\\none of scrape_interval or interval can be used\",\n \"type\": \"string\"\n },\n \"seriesLimit\": {\n \"description\": \"SeriesLimit defines per-scrape limit on number of unique time series\\na single target can expose during all the scrapes on the time window of 24h.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"targetPort\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"TargetPort\\nName or number of the pod port this endpoint refers to. Mutually exclusive with port.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"tlsConfig\": {\n \"description\": \"TLSConfig configuration to use when scraping the endpoint\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vm_scrape_params\": {\n \"description\": \"VMScrapeParams defines VictoriaMetrics specific scrape parameters\",\n \"properties\": {\n \"disable_compression\": {\n \"description\": \"DisableCompression\",\n \"type\": \"boolean\"\n },\n \"disable_keep_alive\": {\n \"description\": \"disable_keepalive allows disabling HTTP keep-alive when scraping targets.\\nBy default, HTTP keep-alive is enabled, so TCP connections to scrape targets\\ncould be re-used.\\nSee https://docs.victoriametrics.com/vmagent#scrape_config-enhancements\",\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"description\": \"Headers allows sending custom headers to scrape targets\\nmust be in of semicolon separated header with it's value\\neg:\\nheaderName: headerValue\\nvmagent supports since 1.79.0 version\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"no_stale_markers\": {\n \"type\": \"boolean\"\n },\n \"proxy_client_config\": {\n \"description\": \"ProxyClientConfig configures proxy auth settings for scraping\\nSee feature description https://docs.victoriametrics.com/vmagent#scraping-targets-via-a-proxy\",\n \"properties\": {\n \"basic_auth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearer_token\": {\n \"description\": \"SecretKeySelector selects a key of a Secret.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"bearer_token_file\": {\n \"type\": \"string\"\n },\n \"tls_config\": {\n \"description\": \"TLSConfig specifies TLSConfig configuration parameters.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrape_align_interval\": {\n \"type\": \"string\"\n },\n \"scrape_offset\": {\n \"type\": \"string\"\n },\n \"stream_parse\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"podTargetLabels\": {\n \"description\": \"PodTargetLabels transfers labels on the Kubernetes Pod onto the target.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"sampleLimit\": {\n \"description\": \"SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"selector\": {\n \"description\": \"Selector to select Pod objects.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"seriesLimit\": {\n \"description\": \"SeriesLimit defines per-scrape limit on number of unique time series\\na single target can expose during all the scrapes on the time window of 24h.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podMetricsEndpoints\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"VM Pod Scrape\",\n \"type\": \"object\"\n}", + "version": "operator.victoriametrics.com/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "VM Pod Scrape", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz" + }, + "model": { + "category": { + "name": "Observability and Analysis" + }, + "displayName": "Victoria Metrics K8S Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0_36_80\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003c/svg\u003e" + }, + "model": { + "version": "0.25.8" + }, + "name": "victoria-metrics-k8s-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Monitoring", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"18\" height=\"18\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0_36_80\"\u003e\n\u003crect width=\"32\" height=\"32\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMProbe.json b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMProbe.json new file mode 100644 index 00000000000..576294e433a --- /dev/null +++ b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMProbe.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "VMProbe", + "schema": "{\n \"description\": \"VMProbe defines a probe for targets, that will be executed with prober,\\nlike blackbox exporter.\\nIt helps to monitor reachability of target with various checks.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"VMProbeSpec contains specification parameters for a Probe.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization with http header Authorization\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Reference to the secret with value for authorization\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"credentialsFile\": {\n \"description\": \"File with value for authorization\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of authorization, default to bearer\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenFile\": {\n \"description\": \"File to read bearer token for scraping targets.\",\n \"type\": \"string\"\n },\n \"bearerTokenSecret\": {\n \"description\": \"Secret to mount to read bearer token for scraping targets. The secret\\nneeds to be in the same namespace as the scrape object and accessible by\\nthe victoria-metrics operator.\",\n \"nullable\": true,\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"follow_redirects\": {\n \"description\": \"FollowRedirects controls redirects for scraping.\",\n \"type\": \"boolean\"\n },\n \"honorLabels\": {\n \"description\": \"HonorLabels chooses the metric's labels on collisions with target labels.\",\n \"type\": \"boolean\"\n },\n \"honorTimestamps\": {\n \"description\": \"HonorTimestamps controls whether vmagent respects the timestamps present in scraped data.\",\n \"type\": \"boolean\"\n },\n \"interval\": {\n \"description\": \"Interval at which metrics should be scraped\",\n \"type\": \"string\"\n },\n \"jobName\": {\n \"description\": \"The job name assigned to scraped metrics by default.\",\n \"type\": \"string\"\n },\n \"max_scrape_size\": {\n \"description\": \"MaxScrapeSize defines a maximum size of scraped data for a job\",\n \"type\": \"string\"\n },\n \"metricRelabelConfigs\": {\n \"description\": \"MetricRelabelConfigs to apply to samples after scrapping.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"module\": {\n \"description\": \"The module to use for probing specifying how to probe the target.\\nExample module configuring in the blackbox exporter:\\nhttps://github.com/prometheus/blackbox_exporter/blob/master/example.yml\",\n \"type\": \"string\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 defines auth configuration\",\n \"properties\": {\n \"client_id\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"client_secret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"client_secret_file\": {\n \"description\": \"ClientSecretFile defines path for client secret file.\",\n \"type\": \"string\"\n },\n \"endpoint_params\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"token_url\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"client_id\",\n \"token_url\"\n ],\n \"type\": \"object\"\n },\n \"params\": {\n \"additionalProperties\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"description\": \"Optional HTTP URL parameters\",\n \"type\": \"object\"\n },\n \"path\": {\n \"description\": \"HTTP path to scrape for metrics.\",\n \"type\": \"string\"\n },\n \"proxyURL\": {\n \"description\": \"ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint.\",\n \"type\": \"string\"\n },\n \"sampleLimit\": {\n \"description\": \"SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"scheme\": {\n \"description\": \"HTTP scheme to use for scraping.\",\n \"enum\": [\n \"http\",\n \"https\"\n ],\n \"type\": \"string\"\n },\n \"scrapeTimeout\": {\n \"description\": \"Timeout after which the scrape is ended\",\n \"type\": \"string\"\n },\n \"scrape_interval\": {\n \"description\": \"ScrapeInterval is the same as Interval and has priority over it.\\none of scrape_interval or interval can be used\",\n \"type\": \"string\"\n },\n \"seriesLimit\": {\n \"description\": \"SeriesLimit defines per-scrape limit on number of unique time series\\na single target can expose during all the scrapes on the time window of 24h.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"targets\": {\n \"description\": \"Targets defines a set of static and/or dynamically discovered targets to be probed using the prober.\",\n \"properties\": {\n \"ingress\": {\n \"description\": \"Ingress defines the set of dynamically discovered ingress objects which hosts are considered for probing.\",\n \"properties\": {\n \"namespaceSelector\": {\n \"description\": \"Select Ingress objects by namespace.\",\n \"properties\": {\n \"any\": {\n \"description\": \"Boolean describing whether all namespaces are selected in contrast to a\\nlist restricting them.\",\n \"type\": \"boolean\"\n },\n \"matchNames\": {\n \"description\": \"List of namespace names.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"relabelingConfigs\": {\n \"description\": \"RelabelConfigs to apply to samples during service discovery.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"selector\": {\n \"description\": \"Select Ingress objects by labels.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"staticConfig\": {\n \"description\": \"StaticConfig defines static targets which are considers for probing.\",\n \"properties\": {\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels assigned to all metrics scraped from the targets.\",\n \"type\": \"object\"\n },\n \"relabelingConfigs\": {\n \"description\": \"RelabelConfigs to apply to samples during service discovery.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"targets\": {\n \"description\": \"Targets is a list of URLs to probe using the configured prober.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"targets\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tlsConfig\": {\n \"description\": \"TLSConfig configuration to use when scraping the endpoint\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vmProberSpec\": {\n \"description\": \"Specification for the prober to use for probing targets.\\nThe prober.URL parameter is required. Targets cannot be probed if left empty.\",\n \"properties\": {\n \"path\": {\n \"description\": \"Path to collect metrics from.\\nDefaults to `/probe`.\",\n \"type\": \"string\"\n },\n \"scheme\": {\n \"description\": \"HTTP scheme to use for scraping.\\nDefaults to `http`.\",\n \"enum\": [\n \"http\",\n \"https\"\n ],\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Mandatory URL of the prober.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"vm_scrape_params\": {\n \"description\": \"VMScrapeParams defines VictoriaMetrics specific scrape parameters\",\n \"properties\": {\n \"disable_compression\": {\n \"description\": \"DisableCompression\",\n \"type\": \"boolean\"\n },\n \"disable_keep_alive\": {\n \"description\": \"disable_keepalive allows disabling HTTP keep-alive when scraping targets.\\nBy default, HTTP keep-alive is enabled, so TCP connections to scrape targets\\ncould be re-used.\\nSee https://docs.victoriametrics.com/vmagent#scrape_config-enhancements\",\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"description\": \"Headers allows sending custom headers to scrape targets\\nmust be in of semicolon separated header with it's value\\neg:\\nheaderName: headerValue\\nvmagent supports since 1.79.0 version\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"no_stale_markers\": {\n \"type\": \"boolean\"\n },\n \"proxy_client_config\": {\n \"description\": \"ProxyClientConfig configures proxy auth settings for scraping\\nSee feature description https://docs.victoriametrics.com/vmagent#scraping-targets-via-a-proxy\",\n \"properties\": {\n \"basic_auth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearer_token\": {\n \"description\": \"SecretKeySelector selects a key of a Secret.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"bearer_token_file\": {\n \"type\": \"string\"\n },\n \"tls_config\": {\n \"description\": \"TLSConfig specifies TLSConfig configuration parameters.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrape_align_interval\": {\n \"type\": \"string\"\n },\n \"scrape_offset\": {\n \"type\": \"string\"\n },\n \"stream_parse\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"vmProberSpec\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"title\": \"VM Probe\",\n \"type\": \"object\"\n}", + "version": "operator.victoriametrics.com/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "VM Probe", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz" + }, + "model": { + "category": { + "name": "Observability and Analysis" + }, + "displayName": "Victoria Metrics K8S Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0_36_80\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003c/svg\u003e" + }, + "model": { + "version": "0.25.8" + }, + "name": "victoria-metrics-k8s-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Monitoring", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"18\" height=\"18\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0_36_80\"\u003e\n\u003crect width=\"32\" height=\"32\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMRule.json b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMRule.json new file mode 100644 index 00000000000..5d0a7b53aa3 --- /dev/null +++ b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMRule.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "VMRule", + "schema": "{\n \"description\": \"VMRule defines rule records for vmalert application\",\n \"properties\": {\n \"spec\": {\n \"description\": \"VMRuleSpec defines the desired state of VMRule\",\n \"properties\": {\n \"groups\": {\n \"description\": \"Groups list of group rules\",\n \"items\": {\n \"description\": \"RuleGroup is a list of sequentially evaluated recording and alerting rules.\",\n \"properties\": {\n \"concurrency\": {\n \"description\": \"Concurrency defines how many rules execute at once.\",\n \"type\": \"integer\"\n },\n \"eval_alignment\": {\n \"description\": \"Optional\\nThe evaluation timestamp will be aligned with group's interval,\\ninstead of using the actual timestamp that evaluation happens at.\\nIt is enabled by default to get more predictable results\\nand to visually align with graphs plotted via Grafana or vmui.\",\n \"type\": \"boolean\"\n },\n \"eval_delay\": {\n \"description\": \"Optional\\nAdjust the `time` parameter of group evaluation requests to compensate intentional query delay from the datasource.\",\n \"type\": \"string\"\n },\n \"eval_offset\": {\n \"description\": \"Optional\\nGroup will be evaluated at the exact offset in the range of [0...interval].\",\n \"type\": \"string\"\n },\n \"extra_filter_labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"ExtraFilterLabels optional list of label filters applied to every rule's\\nrequest within a group. Is compatible only with VM datasource.\\nSee more details [here](https://docs.victoriametrics.com/#prometheus-querying-api-enhancements)\\nDeprecated, use params instead\",\n \"type\": \"object\"\n },\n \"headers\": {\n \"description\": \"Headers contains optional HTTP headers added to each rule request\\nMust be in form `header-name: value`\\nFor example:\\n headers:\\n - \\\"CustomHeader: foo\\\"\\n - \\\"CustomHeader2: bar\\\"\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"interval\": {\n \"description\": \"evaluation interval for group\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels optional list of labels added to every rule within a group.\\nIt has priority over the external labels.\\nLabels are commonly used for adding environment\\nor tenant-specific tag.\",\n \"type\": \"object\"\n },\n \"limit\": {\n \"description\": \"Limit the number of alerts an alerting rule and series a recording\\nrule can produce\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"Name of group\",\n \"type\": \"string\"\n },\n \"notifier_headers\": {\n \"description\": \"NotifierHeaders contains optional HTTP headers added to each alert request which will send to notifier\\nMust be in form `header-name: value`\\nFor example:\\n headers:\\n - \\\"CustomHeader: foo\\\"\\n - \\\"CustomHeader2: bar\\\"\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"params\": {\n \"additionalProperties\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"description\": \"Params optional HTTP URL parameters added to each rule request\",\n \"type\": \"object\"\n },\n \"rules\": {\n \"description\": \"Rules list of alert rules\",\n \"items\": {\n \"description\": \"Rule describes an alerting or recording rule.\",\n \"properties\": {\n \"alert\": {\n \"description\": \"Alert is a name for alert\",\n \"type\": \"string\"\n },\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations will be added to rule configuration\",\n \"type\": \"object\"\n },\n \"debug\": {\n \"description\": \"Debug enables logging for rule\\nit useful for tracking\",\n \"type\": \"boolean\"\n },\n \"expr\": {\n \"description\": \"Expr is query, that will be evaluated at dataSource\",\n \"type\": \"string\"\n },\n \"for\": {\n \"description\": \"For evaluation interval in time.Duration format\\n30s, 1m, 1h or nanoseconds\",\n \"type\": \"string\"\n },\n \"keep_firing_for\": {\n \"description\": \"KeepFiringFor will make alert continue firing for this long\\neven when the alerting expression no longer has results.\\nUse time.Duration format, 30s, 1m, 1h or nanoseconds\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels will be added to rule configuration\",\n \"type\": \"object\"\n },\n \"record\": {\n \"description\": \"Record represents a query, that will be recorded to dataSource\",\n \"type\": \"string\"\n },\n \"update_entries_limit\": {\n \"description\": \"UpdateEntriesLimit defines max number of rule's state updates stored in memory.\\nOverrides `-rule.updateEntriesLimit` in vmalert.\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tenant\": {\n \"description\": \"Tenant id for group, can be used only with enterprise version of vmalert.\\nSee more details [here](https://docs.victoriametrics.com/vmalert#multitenancy).\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type defines datasource type for enterprise version of vmalert\\npossible values - prometheus,graphite\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"rules\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"groups\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"title\": \"VM Rule\",\n \"type\": \"object\"\n}", + "version": "operator.victoriametrics.com/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "VM Rule", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz" + }, + "model": { + "category": { + "name": "Observability and Analysis" + }, + "displayName": "Victoria Metrics K8S Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0_36_80\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003c/svg\u003e" + }, + "model": { + "version": "0.25.8" + }, + "name": "victoria-metrics-k8s-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Monitoring", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"18\" height=\"18\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0_36_80\"\u003e\n\u003crect width=\"32\" height=\"32\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMScrapeConfig.json b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMScrapeConfig.json new file mode 100644 index 00000000000..160c576489b --- /dev/null +++ b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMScrapeConfig.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "VMScrapeConfig", + "schema": "{\n \"description\": \"VMScrapeConfig specifies a set of targets and parameters describing how to scrape them.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"VMScrapeConfigSpec defines the desired state of VMScrapeConfig\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization with http header Authorization\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Reference to the secret with value for authorization\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"credentialsFile\": {\n \"description\": \"File with value for authorization\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of authorization, default to bearer\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"azureSDConfigs\": {\n \"description\": \"AzureSDConfigs defines a list of Azure service discovery configurations.\",\n \"items\": {\n \"description\": \"AzureSDConfig allow retrieving scrape targets from Azure VMs.\\nSee [here](https://docs.victoriametrics.com/sd_configs#azure_sd_configs)\",\n \"properties\": {\n \"authenticationMethod\": {\n \"description\": \"# The authentication method, either OAuth or ManagedIdentity.\\nSee https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview\",\n \"enum\": [\n \"OAuth\",\n \"ManagedIdentity\"\n ],\n \"type\": \"string\"\n },\n \"clientID\": {\n \"description\": \"Optional client ID. Only required with the OAuth authentication method.\",\n \"type\": \"string\"\n },\n \"clientSecret\": {\n \"description\": \"Optional client secret. Only required with the OAuth authentication method.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"environment\": {\n \"description\": \"The Azure environment.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"The port to scrape metrics from. If using the public IP address, this must\\ninstead be specified in the relabeling rule.\",\n \"type\": \"integer\"\n },\n \"resourceGroup\": {\n \"description\": \"Optional resource group name. Limits discovery to this resource group.\",\n \"type\": \"string\"\n },\n \"subscriptionID\": {\n \"description\": \"The subscription ID. Always required.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"tenantID\": {\n \"description\": \"Optional tenant ID. Only required with the OAuth authentication method.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"subscriptionID\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenFile\": {\n \"description\": \"File to read bearer token for scraping targets.\",\n \"type\": \"string\"\n },\n \"bearerTokenSecret\": {\n \"description\": \"Secret to mount to read bearer token for scraping targets. The secret\\nneeds to be in the same namespace as the scrape object and accessible by\\nthe victoria-metrics operator.\",\n \"nullable\": true,\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"consulSDConfigs\": {\n \"description\": \"ConsulSDConfigs defines a list of Consul service discovery configurations.\",\n \"items\": {\n \"description\": \"ConsulSDConfig defines a Consul service discovery configuration.\\nSee [here](https://docs.victoriametrics.com/sd_configs/#consul_sd_configs)\",\n \"properties\": {\n \"allowStale\": {\n \"description\": \"Allow stale Consul results (see https://developer.hashicorp.com/consul/api-docs/features/consistency). Will reduce load on Consul.\\nIf unset, use its default value.\",\n \"type\": \"boolean\"\n },\n \"authorization\": {\n \"description\": \"Authorization header to use on every scrape request.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Reference to the secret with value for authorization\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"credentialsFile\": {\n \"description\": \"File with value for authorization\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of authorization, default to bearer\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth information to use on every scrape request.\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"datacenter\": {\n \"description\": \"Consul Datacenter name, if not provided it will use the local Consul Agent Datacenter.\",\n \"type\": \"string\"\n },\n \"followRedirects\": {\n \"description\": \"Configure whether HTTP requests follow HTTP 3xx redirects.\\nIf unset, use its default value.\",\n \"type\": \"boolean\"\n },\n \"namespace\": {\n \"description\": \"Namespaces are only supported in Consul Enterprise.\",\n \"type\": \"string\"\n },\n \"nodeMeta\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Node metadata key/value pairs to filter nodes for a given service.\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 defines auth configuration\",\n \"properties\": {\n \"client_id\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"client_secret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"client_secret_file\": {\n \"description\": \"ClientSecretFile defines path for client secret file.\",\n \"type\": \"string\"\n },\n \"endpoint_params\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"token_url\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"client_id\",\n \"token_url\"\n ],\n \"type\": \"object\"\n },\n \"partition\": {\n \"description\": \"Admin Partitions are only supported in Consul Enterprise.\",\n \"type\": \"string\"\n },\n \"proxyURL\": {\n \"description\": \"ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint.\",\n \"type\": \"string\"\n },\n \"proxy_client_config\": {\n \"description\": \"ProxyClientConfig configures proxy auth settings for scraping\\nSee [feature description](https://docs.victoriametrics.com/vmagent#scraping-targets-via-a-proxy)\",\n \"properties\": {\n \"basic_auth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearer_token\": {\n \"description\": \"SecretKeySelector selects a key of a Secret.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"bearer_token_file\": {\n \"type\": \"string\"\n },\n \"tls_config\": {\n \"description\": \"TLSConfig specifies TLSConfig configuration parameters.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scheme\": {\n \"description\": \"HTTP Scheme default \\\"http\\\"\",\n \"enum\": [\n \"HTTP\",\n \"HTTPS\"\n ],\n \"type\": \"string\"\n },\n \"server\": {\n \"description\": \"A valid string consisting of a hostname or IP followed by an optional port number.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"services\": {\n \"description\": \"A list of services for which targets are retrieved. If omitted, all services are scraped.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"tagSeparator\": {\n \"description\": \"The string by which Consul tags are joined into the tag label.\\nIf unset, use its default value.\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"An optional list of tags used to filter nodes for a given service. Services must contain all tags in the list.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration to use on every scrape request\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tokenRef\": {\n \"description\": \"Consul ACL TokenRef, if not provided it will use the ACL from the local Consul Agent.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"digitalOceanSDConfigs\": {\n \"description\": \"DigitalOceanSDConfigs defines a list of DigitalOcean service discovery configurations.\",\n \"items\": {\n \"description\": \"DigitalOceanSDConfig allow retrieving scrape targets from DigitalOcean's Droplets API.\\nThis service discovery uses the public IPv4 address by default, by that can be changed with relabeling.\\nSee [here](https://docs.victoriametrics.com/sd_configs#digitalocean_sd_configs)\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization header to use on every scrape request.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Reference to the secret with value for authorization\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"credentialsFile\": {\n \"description\": \"File with value for authorization\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of authorization, default to bearer\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"followRedirects\": {\n \"description\": \"Configure whether HTTP requests follow HTTP 3xx redirects.\",\n \"type\": \"boolean\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 defines auth configuration\",\n \"properties\": {\n \"client_id\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"client_secret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"client_secret_file\": {\n \"description\": \"ClientSecretFile defines path for client secret file.\",\n \"type\": \"string\"\n },\n \"endpoint_params\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"token_url\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"client_id\",\n \"token_url\"\n ],\n \"type\": \"object\"\n },\n \"port\": {\n \"description\": \"The port to scrape metrics from.\",\n \"type\": \"integer\"\n },\n \"proxyURL\": {\n \"description\": \"ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint.\",\n \"type\": \"string\"\n },\n \"proxy_client_config\": {\n \"description\": \"ProxyClientConfig configures proxy auth settings for scraping\\nSee [feature description](https://docs.victoriametrics.com/vmagent#scraping-targets-via-a-proxy)\",\n \"properties\": {\n \"basic_auth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearer_token\": {\n \"description\": \"SecretKeySelector selects a key of a Secret.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"bearer_token_file\": {\n \"type\": \"string\"\n },\n \"tls_config\": {\n \"description\": \"TLSConfig specifies TLSConfig configuration parameters.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration to use on every scrape request\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"dnsSDConfigs\": {\n \"description\": \"DNSSDConfigs defines a list of DNS service discovery configurations.\",\n \"items\": {\n \"description\": \"DNSSDConfig allows specifying a set of DNS domain names which are periodically queried to discover a list of targets.\\nThe DNS servers to be contacted are read from /etc/resolv.conf.\\nSee [here](https://docs.victoriametrics.com/sd_configs#dns_sd_configs)\",\n \"properties\": {\n \"names\": {\n \"description\": \"A list of DNS domain names to be queried.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"minItems\": 1,\n \"type\": \"array\"\n },\n \"port\": {\n \"description\": \"The port number used if the query type is not SRV\\nIgnored for SRV records\",\n \"type\": \"integer\"\n },\n \"type\": {\n \"enum\": [\n \"SRV\",\n \"A\",\n \"AAAA\",\n \"MX\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"names\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"ec2SDConfigs\": {\n \"description\": \"EC2SDConfigs defines a list of EC2 service discovery configurations.\",\n \"items\": {\n \"description\": \"EC2SDConfig allow retrieving scrape targets from AWS EC2 instances.\\nThe private IP address is used by default, but may be changed to the public IP address with relabeling.\\nThe IAM credentials used must have the ec2:DescribeInstances permission to discover scrape targets.\\nSee [here](https://docs.victoriametrics.com/sd_configs#ec2_sd_configs)\",\n \"properties\": {\n \"accessKey\": {\n \"description\": \"AccessKey is the AWS API key.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"filters\": {\n \"description\": \"Filters can be used optionally to filter the instance list by other criteria.\\nAvailable filter criteria can be found here:\\nhttps://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html\\nFilter API documentation: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_Filter.html\",\n \"items\": {\n \"description\": \"EC2Filter is the configuration for filtering EC2 instances.\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\",\n \"values\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"port\": {\n \"description\": \"The port to scrape metrics from. If using the public IP address, this must\\ninstead be specified in the relabeling rule.\",\n \"type\": \"integer\"\n },\n \"region\": {\n \"description\": \"The AWS region\",\n \"type\": \"string\"\n },\n \"roleARN\": {\n \"description\": \"AWS Role ARN, an alternative to using AWS API keys.\",\n \"type\": \"string\"\n },\n \"secretKey\": {\n \"description\": \"SecretKey is the AWS API secret.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"fileSDConfigs\": {\n \"description\": \"FileSDConfigs defines a list of file service discovery configurations.\",\n \"items\": {\n \"description\": \"FileSDConfig defines a file service discovery configuration.\\nSee [here](https://docs.victoriametrics.com/sd_configs#file_sd_configs)\",\n \"properties\": {\n \"files\": {\n \"description\": \"List of files to be used for file discovery.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"minItems\": 1,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"files\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"follow_redirects\": {\n \"description\": \"FollowRedirects controls redirects for scraping.\",\n \"type\": \"boolean\"\n },\n \"gceSDConfigs\": {\n \"description\": \"GCESDConfigs defines a list of GCE service discovery configurations.\",\n \"items\": {\n \"description\": \"GCESDConfig configures scrape targets from GCP GCE instances.\\nThe private IP address is used by default, but may be changed to\\nthe public IP address with relabeling.\\nSee [here](https://docs.victoriametrics.com/sd_configs#gce_sd_configs)\\n\\n\\nThe GCE service discovery will load the Google Cloud credentials\\nfrom the file specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable.\\nSee https://cloud.google.com/kubernetes-engine/docs/tutorials/authenticating-to-cloud-platform\",\n \"properties\": {\n \"filter\": {\n \"description\": \"Filter can be used optionally to filter the instance list by other criteria\\nSyntax of this filter is described in the filter query parameter section:\\nhttps://cloud.google.com/compute/docs/reference/latest/instances/list\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"The port to scrape metrics from. If using the public IP address, this must\\ninstead be specified in the relabeling rule.\",\n \"type\": \"integer\"\n },\n \"project\": {\n \"description\": \"The Google Cloud Project ID\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"tagSeparator\": {\n \"description\": \"The tag separator is used to separate the tags on concatenation\",\n \"type\": \"string\"\n },\n \"zone\": {\n \"description\": \"The zone of the scrape targets. If you need multiple zones use multiple GCESDConfigs.\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"project\",\n \"zone\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"honorLabels\": {\n \"description\": \"HonorLabels chooses the metric's labels on collisions with target labels.\",\n \"type\": \"boolean\"\n },\n \"honorTimestamps\": {\n \"description\": \"HonorTimestamps controls whether vmagent respects the timestamps present in scraped data.\",\n \"type\": \"boolean\"\n },\n \"httpSDConfigs\": {\n \"description\": \"HTTPSDConfigs defines a list of HTTP service discovery configurations.\",\n \"items\": {\n \"description\": \"HTTPSDConfig defines a HTTP service discovery configuration.\\nSee [here](https://docs.victoriametrics.com/sd_configs#http_sd_configs)\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization header to use on every scrape request.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Reference to the secret with value for authorization\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"credentialsFile\": {\n \"description\": \"File with value for authorization\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of authorization, default to bearer\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth information to use on every scrape request.\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"proxyURL\": {\n \"description\": \"ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint.\",\n \"type\": \"string\"\n },\n \"proxy_client_config\": {\n \"description\": \"ProxyClientConfig configures proxy auth settings for scraping\\nSee [feature description](https://docs.victoriametrics.com/vmagent#scraping-targets-via-a-proxy)\",\n \"properties\": {\n \"basic_auth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearer_token\": {\n \"description\": \"SecretKeySelector selects a key of a Secret.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"bearer_token_file\": {\n \"type\": \"string\"\n },\n \"tls_config\": {\n \"description\": \"TLSConfig specifies TLSConfig configuration parameters.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration to use on every scrape request\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"url\": {\n \"description\": \"URL from which the targets are fetched.\",\n \"minLength\": 1,\n \"pattern\": \"^http(s)?://.+$\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"interval\": {\n \"description\": \"Interval at which metrics should be scraped\",\n \"type\": \"string\"\n },\n \"kubernetesSDConfigs\": {\n \"description\": \"KubernetesSDConfigs defines a list of Kubernetes service discovery configurations.\",\n \"items\": {\n \"description\": \"KubernetesSDConfig allows retrieving scrape targets from Kubernetes' REST API.\\nSee [here](https://docs.victoriametrics.com/sd_configs#kubernetes_sd_configs)\",\n \"properties\": {\n \"apiServer\": {\n \"description\": \"The API server address consisting of a hostname or IP address followed\\nby an optional port number.\\nIf left empty, assuming process is running inside\\nof the cluster. It will discover API servers automatically and use the pod's\\nCA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.\",\n \"type\": \"string\"\n },\n \"attach_metadata\": {\n \"description\": \"AttachMetadata configures metadata attaching from service discovery\",\n \"properties\": {\n \"node\": {\n \"description\": \"Node instructs vmagent to add node specific metadata from service discovery\\nValid for roles: pod, endpoints, endpointslice.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"authorization\": {\n \"description\": \"Authorization header to use on every scrape request.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Reference to the secret with value for authorization\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"credentialsFile\": {\n \"description\": \"File with value for authorization\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of authorization, default to bearer\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth information to use on every scrape request.\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"followRedirects\": {\n \"description\": \"Configure whether HTTP requests follow HTTP 3xx redirects.\",\n \"type\": \"boolean\"\n },\n \"namespaces\": {\n \"description\": \"Optional namespace discovery. If omitted, discover targets across all namespaces.\",\n \"properties\": {\n \"names\": {\n \"description\": \"List of namespaces where to watch for resources.\\nIf empty and `ownNamespace` isn't true, watch for resources in all namespaces.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ownNamespace\": {\n \"description\": \"Includes the namespace in which the pod exists to the list of watched namespaces.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 defines auth configuration\",\n \"properties\": {\n \"client_id\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"client_secret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"client_secret_file\": {\n \"description\": \"ClientSecretFile defines path for client secret file.\",\n \"type\": \"string\"\n },\n \"endpoint_params\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"token_url\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"client_id\",\n \"token_url\"\n ],\n \"type\": \"object\"\n },\n \"proxyURL\": {\n \"description\": \"ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint.\",\n \"type\": \"string\"\n },\n \"proxy_client_config\": {\n \"description\": \"ProxyClientConfig configures proxy auth settings for scraping\\nSee [feature description](https://docs.victoriametrics.com/vmagent#scraping-targets-via-a-proxy)\",\n \"properties\": {\n \"basic_auth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearer_token\": {\n \"description\": \"SecretKeySelector selects a key of a Secret.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"bearer_token_file\": {\n \"type\": \"string\"\n },\n \"tls_config\": {\n \"description\": \"TLSConfig specifies TLSConfig configuration parameters.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"role\": {\n \"description\": \"Role of the Kubernetes entities that should be discovered.\",\n \"type\": \"string\"\n },\n \"selectors\": {\n \"description\": \"Selector to select objects.\",\n \"items\": {\n \"description\": \"K8SSelectorConfig is Kubernetes Selector Config\",\n \"properties\": {\n \"field\": {\n \"type\": \"string\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"role\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"role\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration to use on every scrape request\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"role\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"max_scrape_size\": {\n \"description\": \"MaxScrapeSize defines a maximum size of scraped data for a job\",\n \"type\": \"string\"\n },\n \"metricRelabelConfigs\": {\n \"description\": \"MetricRelabelConfigs to apply to samples after scrapping.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 defines auth configuration\",\n \"properties\": {\n \"client_id\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"client_secret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"client_secret_file\": {\n \"description\": \"ClientSecretFile defines path for client secret file.\",\n \"type\": \"string\"\n },\n \"endpoint_params\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"token_url\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"client_id\",\n \"token_url\"\n ],\n \"type\": \"object\"\n },\n \"openstackSDConfigs\": {\n \"description\": \"OpenStackSDConfigs defines a list of OpenStack service discovery configurations.\",\n \"items\": {\n \"description\": \"OpenStackSDConfig allow retrieving scrape targets from OpenStack Nova instances.\\nSee [here](https://docs.victoriametrics.com/sd_configs#openstack_sd_configs)\",\n \"properties\": {\n \"allTenants\": {\n \"description\": \"Whether the service discovery should list all instances for all projects.\\nIt is only relevant for the 'instance' role and usually requires admin permissions.\",\n \"type\": \"boolean\"\n },\n \"applicationCredentialId\": {\n \"description\": \"ApplicationCredentialID\",\n \"type\": \"string\"\n },\n \"applicationCredentialName\": {\n \"description\": \"The ApplicationCredentialID or ApplicationCredentialName fields are\\nrequired if using an application credential to authenticate. Some providers\\nallow you to create an application credential to authenticate rather than a\\npassword.\",\n \"type\": \"string\"\n },\n \"applicationCredentialSecret\": {\n \"description\": \"The applicationCredentialSecret field is required if using an application\\ncredential to authenticate.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"availability\": {\n \"description\": \"Availability of the endpoint to connect to.\",\n \"enum\": [\n \"Public\",\n \"public\",\n \"Admin\",\n \"admin\",\n \"Internal\",\n \"internal\"\n ],\n \"type\": \"string\"\n },\n \"domainID\": {\n \"description\": \"DomainID\",\n \"type\": \"string\"\n },\n \"domainName\": {\n \"description\": \"At most one of domainId and domainName must be provided if using username\\nwith Identity V3. Otherwise, either are optional.\",\n \"type\": \"string\"\n },\n \"identityEndpoint\": {\n \"description\": \"IdentityEndpoint specifies the HTTP endpoint that is required to work with\\nthe Identity API of the appropriate version.\",\n \"type\": \"string\"\n },\n \"password\": {\n \"description\": \"Password for the Identity V2 and V3 APIs. Consult with your provider's\\ncontrol panel to discover your account's preferred method of authentication.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"port\": {\n \"description\": \"The port to scrape metrics from. If using the public IP address, this must\\ninstead be specified in the relabeling rule.\",\n \"type\": \"integer\"\n },\n \"projectID\": {\n \"description\": \" ProjectID\",\n \"type\": \"string\"\n },\n \"projectName\": {\n \"description\": \"The ProjectId and ProjectName fields are optional for the Identity V2 API.\\nSome providers allow you to specify a ProjectName instead of the ProjectId.\\nSome require both. Your provider's authentication policies will determine\\nhow these fields influence authentication.\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"The OpenStack Region.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"The OpenStack role of entities that should be discovered.\",\n \"enum\": [\n \"Instance\",\n \"instance\",\n \"Hypervisor\",\n \"hypervisor\"\n ],\n \"type\": \"string\"\n },\n \"tlsConfig\": {\n \"description\": \"TLS configuration to use on every scrape request\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"userid\": {\n \"description\": \"UserID\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username is required if using Identity V2 API. Consult with your provider's\\ncontrol panel to discover your account's username.\\nIn Identity V3, either userid or a combination of username\\nand domainId or domainName are needed\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"region\",\n \"role\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"params\": {\n \"additionalProperties\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"description\": \"Optional HTTP URL parameters\",\n \"type\": \"object\"\n },\n \"path\": {\n \"description\": \"HTTP path to scrape for metrics.\",\n \"type\": \"string\"\n },\n \"proxyURL\": {\n \"description\": \"ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint.\",\n \"type\": \"string\"\n },\n \"relabelConfigs\": {\n \"description\": \"RelabelConfigs to apply to samples during service discovery.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sampleLimit\": {\n \"description\": \"SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"scheme\": {\n \"description\": \"HTTP scheme to use for scraping.\",\n \"enum\": [\n \"http\",\n \"https\"\n ],\n \"type\": \"string\"\n },\n \"scrapeTimeout\": {\n \"description\": \"Timeout after which the scrape is ended\",\n \"type\": \"string\"\n },\n \"scrape_interval\": {\n \"description\": \"ScrapeInterval is the same as Interval and has priority over it.\\none of scrape_interval or interval can be used\",\n \"type\": \"string\"\n },\n \"seriesLimit\": {\n \"description\": \"SeriesLimit defines per-scrape limit on number of unique time series\\na single target can expose during all the scrapes on the time window of 24h.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"staticConfigs\": {\n \"description\": \"StaticConfigs defines a list of static targets with a common label set.\",\n \"items\": {\n \"description\": \"StaticConfig defines a static configuration.\\nSee [here](https://docs.victoriametrics.com/sd_configs#static_configs)\",\n \"properties\": {\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels assigned to all metrics scraped from the targets.\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targets\": {\n \"description\": \"List of targets for this static configuration.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tlsConfig\": {\n \"description\": \"TLSConfig configuration to use when scraping the endpoint\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vm_scrape_params\": {\n \"description\": \"VMScrapeParams defines VictoriaMetrics specific scrape parameters\",\n \"properties\": {\n \"disable_compression\": {\n \"description\": \"DisableCompression\",\n \"type\": \"boolean\"\n },\n \"disable_keep_alive\": {\n \"description\": \"disable_keepalive allows disabling HTTP keep-alive when scraping targets.\\nBy default, HTTP keep-alive is enabled, so TCP connections to scrape targets\\ncould be re-used.\\nSee https://docs.victoriametrics.com/vmagent#scrape_config-enhancements\",\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"description\": \"Headers allows sending custom headers to scrape targets\\nmust be in of semicolon separated header with it's value\\neg:\\nheaderName: headerValue\\nvmagent supports since 1.79.0 version\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"no_stale_markers\": {\n \"type\": \"boolean\"\n },\n \"proxy_client_config\": {\n \"description\": \"ProxyClientConfig configures proxy auth settings for scraping\\nSee feature description https://docs.victoriametrics.com/vmagent#scraping-targets-via-a-proxy\",\n \"properties\": {\n \"basic_auth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearer_token\": {\n \"description\": \"SecretKeySelector selects a key of a Secret.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"bearer_token_file\": {\n \"type\": \"string\"\n },\n \"tls_config\": {\n \"description\": \"TLSConfig specifies TLSConfig configuration parameters.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrape_align_interval\": {\n \"type\": \"string\"\n },\n \"scrape_offset\": {\n \"type\": \"string\"\n },\n \"stream_parse\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"VM Scrape Config\",\n \"type\": \"object\"\n}", + "version": "operator.victoriametrics.com/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "VM Scrape Config", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz" + }, + "model": { + "category": { + "name": "Observability and Analysis" + }, + "displayName": "Victoria Metrics K8S Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0_36_80\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003c/svg\u003e" + }, + "model": { + "version": "0.25.8" + }, + "name": "victoria-metrics-k8s-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Monitoring", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"18\" height=\"18\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0_36_80\"\u003e\n\u003crect width=\"32\" height=\"32\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMServiceScrape.json b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMServiceScrape.json new file mode 100644 index 00000000000..6b925cb4128 --- /dev/null +++ b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMServiceScrape.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "VMServiceScrape", + "schema": "{\n \"description\": \"VMServiceScrape is scrape configuration for endpoints associated with\\nkubernetes service,\\nit generates scrape configuration for vmagent based on selectors.\\nresult config will scrape service endpoints\",\n \"properties\": {\n \"spec\": {\n \"description\": \"VMServiceScrapeSpec defines the desired state of VMServiceScrape\",\n \"properties\": {\n \"attach_metadata\": {\n \"description\": \"AttachMetadata configures metadata attaching from service discovery\",\n \"properties\": {\n \"node\": {\n \"description\": \"Node instructs vmagent to add node specific metadata from service discovery\\nValid for roles: pod, endpoints, endpointslice.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"discoveryRole\": {\n \"description\": \"DiscoveryRole - defines kubernetes_sd role for objects discovery.\\nby default, its endpoints.\\ncan be changed to service or endpointslices.\\nnote, that with service setting, you have to use port: \\\"name\\\"\\nand cannot use targetPort for endpoints.\",\n \"enum\": [\n \"endpoints\",\n \"service\",\n \"endpointslices\"\n ],\n \"type\": \"string\"\n },\n \"endpoints\": {\n \"description\": \"A list of endpoints allowed as part of this ServiceScrape.\",\n \"items\": {\n \"description\": \"Endpoint defines a scrapeable endpoint serving metrics.\",\n \"properties\": {\n \"attach_metadata\": {\n \"description\": \"AttachMetadata configures metadata attaching from service discovery\",\n \"properties\": {\n \"node\": {\n \"description\": \"Node instructs vmagent to add node specific metadata from service discovery\\nValid for roles: pod, endpoints, endpointslice.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"authorization\": {\n \"description\": \"Authorization with http header Authorization\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Reference to the secret with value for authorization\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"credentialsFile\": {\n \"description\": \"File with value for authorization\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of authorization, default to bearer\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenFile\": {\n \"description\": \"File to read bearer token for scraping targets.\",\n \"type\": \"string\"\n },\n \"bearerTokenSecret\": {\n \"description\": \"Secret to mount to read bearer token for scraping targets. The secret\\nneeds to be in the same namespace as the scrape object and accessible by\\nthe victoria-metrics operator.\",\n \"nullable\": true,\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"follow_redirects\": {\n \"description\": \"FollowRedirects controls redirects for scraping.\",\n \"type\": \"boolean\"\n },\n \"honorLabels\": {\n \"description\": \"HonorLabels chooses the metric's labels on collisions with target labels.\",\n \"type\": \"boolean\"\n },\n \"honorTimestamps\": {\n \"description\": \"HonorTimestamps controls whether vmagent respects the timestamps present in scraped data.\",\n \"type\": \"boolean\"\n },\n \"interval\": {\n \"description\": \"Interval at which metrics should be scraped\",\n \"type\": \"string\"\n },\n \"max_scrape_size\": {\n \"description\": \"MaxScrapeSize defines a maximum size of scraped data for a job\",\n \"type\": \"string\"\n },\n \"metricRelabelConfigs\": {\n \"description\": \"MetricRelabelConfigs to apply to samples after scrapping.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 defines auth configuration\",\n \"properties\": {\n \"client_id\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"client_secret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"client_secret_file\": {\n \"description\": \"ClientSecretFile defines path for client secret file.\",\n \"type\": \"string\"\n },\n \"endpoint_params\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"token_url\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"client_id\",\n \"token_url\"\n ],\n \"type\": \"object\"\n },\n \"params\": {\n \"additionalProperties\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"description\": \"Optional HTTP URL parameters\",\n \"type\": \"object\"\n },\n \"path\": {\n \"description\": \"HTTP path to scrape for metrics.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Name of the port exposed at Service.\",\n \"type\": \"string\"\n },\n \"proxyURL\": {\n \"description\": \"ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint.\",\n \"type\": \"string\"\n },\n \"relabelConfigs\": {\n \"description\": \"RelabelConfigs to apply to samples during service discovery.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sampleLimit\": {\n \"description\": \"SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"scheme\": {\n \"description\": \"HTTP scheme to use for scraping.\",\n \"enum\": [\n \"http\",\n \"https\"\n ],\n \"type\": \"string\"\n },\n \"scrapeTimeout\": {\n \"description\": \"Timeout after which the scrape is ended\",\n \"type\": \"string\"\n },\n \"scrape_interval\": {\n \"description\": \"ScrapeInterval is the same as Interval and has priority over it.\\none of scrape_interval or interval can be used\",\n \"type\": \"string\"\n },\n \"seriesLimit\": {\n \"description\": \"SeriesLimit defines per-scrape limit on number of unique time series\\na single target can expose during all the scrapes on the time window of 24h.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"targetPort\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"TargetPort\\nName or number of the pod port this endpoint refers to. Mutually exclusive with port.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"tlsConfig\": {\n \"description\": \"TLSConfig configuration to use when scraping the endpoint\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vm_scrape_params\": {\n \"description\": \"VMScrapeParams defines VictoriaMetrics specific scrape parameters\",\n \"properties\": {\n \"disable_compression\": {\n \"description\": \"DisableCompression\",\n \"type\": \"boolean\"\n },\n \"disable_keep_alive\": {\n \"description\": \"disable_keepalive allows disabling HTTP keep-alive when scraping targets.\\nBy default, HTTP keep-alive is enabled, so TCP connections to scrape targets\\ncould be re-used.\\nSee https://docs.victoriametrics.com/vmagent#scrape_config-enhancements\",\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"description\": \"Headers allows sending custom headers to scrape targets\\nmust be in of semicolon separated header with it's value\\neg:\\nheaderName: headerValue\\nvmagent supports since 1.79.0 version\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"no_stale_markers\": {\n \"type\": \"boolean\"\n },\n \"proxy_client_config\": {\n \"description\": \"ProxyClientConfig configures proxy auth settings for scraping\\nSee feature description https://docs.victoriametrics.com/vmagent#scraping-targets-via-a-proxy\",\n \"properties\": {\n \"basic_auth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearer_token\": {\n \"description\": \"SecretKeySelector selects a key of a Secret.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"bearer_token_file\": {\n \"type\": \"string\"\n },\n \"tls_config\": {\n \"description\": \"TLSConfig specifies TLSConfig configuration parameters.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrape_align_interval\": {\n \"type\": \"string\"\n },\n \"scrape_offset\": {\n \"type\": \"string\"\n },\n \"stream_parse\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"jobLabel\": {\n \"description\": \"The label to use to retrieve the job name from.\",\n \"type\": \"string\"\n },\n \"namespaceSelector\": {\n \"description\": \"Selector to select which namespaces the Endpoints objects are discovered from.\",\n \"properties\": {\n \"any\": {\n \"description\": \"Boolean describing whether all namespaces are selected in contrast to a\\nlist restricting them.\",\n \"type\": \"boolean\"\n },\n \"matchNames\": {\n \"description\": \"List of namespace names.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podTargetLabels\": {\n \"description\": \"PodTargetLabels transfers labels on the Kubernetes Pod onto the target.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"sampleLimit\": {\n \"description\": \"SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"selector\": {\n \"description\": \"Selector to select Endpoints objects by corresponding Service labels.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"seriesLimit\": {\n \"description\": \"SeriesLimit defines per-scrape limit on number of unique time series\\na single target can expose during all the scrapes on the time window of 24h.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"targetLabels\": {\n \"description\": \"TargetLabels transfers labels on the Kubernetes Service onto the target.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"endpoints\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"title\": \"VM Service Scrape\",\n \"type\": \"object\"\n}", + "version": "operator.victoriametrics.com/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "VM Service Scrape", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz" + }, + "model": { + "category": { + "name": "Observability and Analysis" + }, + "displayName": "Victoria Metrics K8S Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0_36_80\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003c/svg\u003e" + }, + "model": { + "version": "0.25.8" + }, + "name": "victoria-metrics-k8s-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Monitoring", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"18\" height=\"18\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0_36_80\"\u003e\n\u003crect width=\"32\" height=\"32\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMSingle.json b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMSingle.json new file mode 100644 index 00000000000..72d0e97edd0 --- /dev/null +++ b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMSingle.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "VMSingle", + "schema": "{\n \"description\": \"VMSingle is fast, cost-effective and scalable time-series database.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"VMSingleSpec defines the desired state of VMSingle\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"Affinity If specified, the pod's scheduling constraints.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"configMaps\": {\n \"description\": \"ConfigMaps is a list of ConfigMaps in the same namespace as the VMSingle\\nobject, which shall be mounted into the VMSingle Pods.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"containers\": {\n \"description\": \"Containers property allows to inject additions sidecars or to patch existing containers.\\nIt can be useful for proxies, backup, etc.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"items\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"DNSPolicy sets DNS policy for the pod\",\n \"type\": \"string\"\n },\n \"extraArgs\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"ExtraArgs that will be passed to VMSingle pod\\nfor example remoteWrite.tmpDataPath: /tmp\",\n \"type\": \"object\"\n },\n \"extraEnvs\": {\n \"description\": \"ExtraEnvs that will be added to VMSingle pod\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"format\": \"textarea\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hostAliases\": {\n \"description\": \"HostAliases provides mapping for ip and hostname,\\nthat would be propagated to pod,\\ncannot be used with HostNetwork.\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\\npod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ip\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"hostNetwork\": {\n \"description\": \"HostNetwork controls whether the pod may use the node network namespace\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Image - docker image settings for VMSingle\\nif no specified operator uses default config version\",\n \"properties\": {\n \"pullPolicy\": {\n \"description\": \"PullPolicy describes how to pull docker image\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"Repository contains name of docker image + it's repository if needed\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"description\": \"Tag contains desired docker image version\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets An optional list of references to secrets in the same namespace\\nto use for pulling images from registries\\nsee https://kubernetes.io/docs/concepts/containers/images/#referring-to-an-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"initContainers\": {\n \"description\": \"InitContainers allows adding initContainers to the pod definition. Those can be used to e.g.\\nfetch secrets for injection into the vmSingle configuration from external sources. Any\\nerrors 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/\\nUsing initContainers for any use case other then secret fetching is entirely outside the scope\\nof what the maintainers will support and by doing so, you accept that this behaviour may break\\nat any time without notice.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"insertPorts\": {\n \"description\": \"InsertPorts - additional listen ports for data ingestion.\",\n \"properties\": {\n \"graphitePort\": {\n \"description\": \"GraphitePort listen port\",\n \"type\": \"string\"\n },\n \"influxPort\": {\n \"description\": \"InfluxPort listen port\",\n \"type\": \"string\"\n },\n \"openTSDBHTTPPort\": {\n \"description\": \"OpenTSDBHTTPPort for http connections.\",\n \"type\": \"string\"\n },\n \"openTSDBPort\": {\n \"description\": \"OpenTSDBPort for tcp and udp listen\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"license\": {\n \"description\": \"License allows to configure license key to be used for enterprise features.\\nUsing license key is supported starting from VictoriaMetrics v1.94.0.\\nSee [here](https://docs.victoriametrics.com/enterprise)\",\n \"properties\": {\n \"key\": {\n \"description\": \"Enterprise license key. This flag is available only in [VictoriaMetrics enterprise](https://docs.victoriametrics.com/enterprise).\\nTo request a trial license, [go to](https://victoriametrics.com/products/enterprise/trial)\",\n \"type\": \"string\"\n },\n \"keyRef\": {\n \"description\": \"KeyRef is reference to secret with license key for enterprise features.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"LivenessProbe that will be added CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"logFormat\": {\n \"description\": \"LogFormat for VMSingle to be configured with.\",\n \"enum\": [\n \"default\",\n \"json\"\n ],\n \"type\": \"string\"\n },\n \"logLevel\": {\n \"description\": \"LogLevel for victoria metrics single to be configured with.\",\n \"enum\": [\n \"INFO\",\n \"WARN\",\n \"ERROR\",\n \"FATAL\",\n \"PANIC\"\n ],\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector Define which Nodes the Pods are scheduled on.\",\n \"type\": \"object\"\n },\n \"paused\": {\n \"description\": \"Paused If set to true all actions on the underlying managed objects are not\\ngoing to be performed, except for delete actions.\",\n \"type\": \"boolean\"\n },\n \"podMetadata\": {\n \"description\": \"PodMetadata configures Labels and Annotations which are propagated to the VMSingle pods.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"port\": {\n \"description\": \"Port listen port\",\n \"type\": \"string\"\n },\n \"priorityClassName\": {\n \"description\": \"PriorityClassName assigned to the Pods\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"ReadinessGates defines pod readiness gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readinessProbe\": {\n \"description\": \"ReadinessProbe that will be added CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"removePvcAfterDelete\": {\n \"description\": \"RemovePvcAfterDelete - if true, controller adds ownership to pvc\\nand after VMSingle objest deletion - pvc will be garbage collected\\nby controller manager\",\n \"type\": \"boolean\"\n },\n \"replicaCount\": {\n \"description\": \"ReplicaCount is the expected size of the VMSingle\\nit can be 0 or 1\\nif you need more - use vm cluster\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"resources\": {\n \"description\": \"Resources container resource request and limits, https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\\nif not defined default resources from operator config will be used\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"retentionPeriod\": {\n \"description\": \"RetentionPeriod for the stored metrics\\nNote VictoriaMetrics has data/ and indexdb/ folders\\nmetrics from data/ removed eventually as soon as partition leaves retention period\\nreverse index data at indexdb rotates once at the half of configured [retention period](https://docs.victoriametrics.com/Single-server-VictoriaMetrics/#retention)\",\n \"type\": \"string\"\n },\n \"revisionHistoryLimitCount\": {\n \"description\": \"The number of old ReplicaSets to retain to allow rollback in deployment or\\nmaximum number of revisions that will be maintained in the StatefulSet's revision history.\\nDefaults to 10.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName - defines runtime class for kubernetes pod.\\nhttps://kubernetes.io/docs/concepts/containers/runtime-class/\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"SchedulerName - defines kubernetes scheduler name\",\n \"type\": \"string\"\n },\n \"secrets\": {\n \"description\": \"Secrets is a list of Secrets in the same namespace as the VMSingle\\nobject, which shall be mounted into the VMSingle Pods.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nThis defaults to the default PodSecurityContext.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run the\\nVMSingle Pods.\",\n \"type\": \"string\"\n },\n \"serviceScrapeSpec\": {\n \"description\": \"ServiceScrapeSpec that will be added to vmsingle VMServiceScrape spec\",\n \"format\": \"textarea\",\n \"required\": [\n \"endpoints\"\n ],\n \"type\": \"string\"\n },\n \"serviceSpec\": {\n \"description\": \"ServiceSpec that will be added to vmsingle service spec\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"EmbeddedObjectMetadata defines objectMeta for additional service.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"ServiceSpec describes the attributes that a user creates on a service.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"useAsDefault\": {\n \"description\": \"UseAsDefault applies changes from given service definition to the main object Service\\nChanging from headless service to clusterIP or loadbalancer may break cross-component communication\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe that will be added to CRD pod\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"storage\": {\n \"description\": \"Storage is the definition of how storage will be used by the VMSingle\\nby default it`s empty dir\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageDataPath\": {\n \"description\": \"StorageDataPath disables spec.storage option and overrides arg for victoria-metrics binary --storageDataPath,\\nits users responsibility to mount proper device into given path.\",\n \"type\": \"string\"\n },\n \"storageMetadata\": {\n \"description\": \"StorageMeta defines annotations and labels attached to PVC for given vmsingle CR\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although\\nsome resources may allow a client to request the generation of an appropriate name\\nautomatically. Name is primarily intended for creation idempotence and configuration\\ndefinition.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"streamAggrConfig\": {\n \"description\": \"StreamAggrConfig defines stream aggregation configuration for VMSingle\",\n \"properties\": {\n \"configmap\": {\n \"description\": \"ConfigMap with stream aggregation rules\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dedupInterval\": {\n \"description\": \"Allows setting different de-duplication intervals per each configured remote storage\",\n \"type\": \"string\"\n },\n \"dropInput\": {\n \"description\": \"Allow drop all the input samples after the aggregation\",\n \"type\": \"boolean\"\n },\n \"dropInputLabels\": {\n \"description\": \"labels to drop from samples for aggregator before stream de-duplication and aggregation\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ignoreFirstIntervals\": {\n \"type\": \"integer\"\n },\n \"ignoreOldSamples\": {\n \"description\": \"IgnoreOldSamples instructs to ignore samples with old timestamps outside the current aggregation interval.\",\n \"type\": \"boolean\"\n },\n \"keepInput\": {\n \"description\": \"Allows writing both raw and aggregate data\",\n \"type\": \"boolean\"\n },\n \"rules\": {\n \"description\": \"Stream aggregation rules\",\n \"items\": {\n \"description\": \"StreamAggrRule defines the rule in stream aggregation config\",\n \"properties\": {\n \"by\": {\n \"description\": \"By is an optional list of labels for grouping input series.\\n\\n\\nSee also Without.\\n\\n\\nIf neither By nor Without are set, then the Outputs are calculated\\nindividually per each input time series.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dedup_interval\": {\n \"description\": \"DedupInterval is an optional interval for deduplication.\",\n \"type\": \"string\"\n },\n \"drop_input_labels\": {\n \"description\": \"DropInputLabels is an optional list with labels, which must be dropped before further processing of input samples.\\n\\n\\nLabels are dropped before de-duplication and aggregation.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"flush_on_shutdown\": {\n \"description\": \"FlushOnShutdown defines whether to flush the aggregation state on process termination\\nor config reload. Is `false` by default.\\nIt is not recommended changing this setting, unless unfinished aggregations states\\nare preferred to missing data points.\",\n \"type\": \"boolean\"\n },\n \"ignore_first_intervals\": {\n \"type\": \"integer\"\n },\n \"ignore_old_samples\": {\n \"description\": \"IgnoreOldSamples instructs to ignore samples with old timestamps outside the current aggregation interval.\",\n \"type\": \"boolean\"\n },\n \"input_relabel_configs\": {\n \"description\": \"InputRelabelConfigs is an optional relabeling rules, which are applied on the input\\nbefore aggregation.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"interval\": {\n \"description\": \"Interval is the interval between aggregations.\",\n \"type\": \"string\"\n },\n \"keep_metric_names\": {\n \"description\": \"KeepMetricNames instructs to leave metric names as is for the output time series without adding any suffix.\",\n \"type\": \"boolean\"\n },\n \"match\": {\n \"description\": \"Match is a label selector (or list of label selectors) for filtering time series for the given selector.\\n\\n\\nIf the match isn't set, then all the input time series are processed.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"no_align_flush_to_interval\": {\n \"description\": \"NoAlignFlushToInterval disables aligning of flushes to multiples of Interval.\\nBy default flushes are aligned to Interval.\",\n \"type\": \"boolean\"\n },\n \"output_relabel_configs\": {\n \"description\": \"OutputRelabelConfigs is an optional relabeling rules, which are applied\\non the aggregated output before being sent to remote storage.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"outputs\": {\n \"description\": \"Outputs is a list of output aggregate functions to produce.\\n\\n\\nThe following names are allowed:\\n\\n\\n- total - aggregates input counters\\n- increase - counts the increase over input counters\\n- count_series - counts the input series\\n- count_samples - counts the input samples\\n- sum_samples - sums the input samples\\n- last - the last biggest sample value\\n- min - the minimum sample value\\n- max - the maximum sample value\\n- avg - the average value across all the samples\\n- stddev - standard deviation across all the samples\\n- stdvar - standard variance across all the samples\\n- histogram_bucket - creates VictoriaMetrics histogram for input samples\\n- quantiles(phi1, ..., phiN) - quantiles' estimation for phi in the range [0..1]\\n\\n\\nThe output time series will have the following names:\\n\\n\\n input_name:aggr_\\u003cinterval\\u003e_\\u003coutput\\u003e\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"staleness_interval\": {\n \"description\": \"Staleness interval is interval after which the series state will be reset if no samples have been sent during it.\\nThe parameter is only relevant for outputs: total, total_prometheus, increase, increase_prometheus and histogram_bucket.\",\n \"type\": \"string\"\n },\n \"without\": {\n \"description\": \"Without is an optional list of labels, which must be excluded when grouping input series.\\n\\n\\nSee also By.\\n\\n\\nIf neither By nor Without are set, then the Outputs are calculated\\nindividually per each input time series.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"interval\",\n \"outputs\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"TerminationGracePeriodSeconds period for container graceful termination\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"Tolerations If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints embedded kubernetes pod configuration option,\\ncontrols how pods are spread across your cluster among failure-domains\\nsuch as regions, zones, nodes, and other user-defined topology domains\\nhttps://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"format\": \"textarea\",\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"useStrictSecurity\": {\n \"description\": \"UseStrictSecurity enables strict security mode for component\\nit restricts disk writes access\\nuses non-root user out of the box\\ndrops not needed security permissions\",\n \"type\": \"boolean\"\n },\n \"vmBackup\": {\n \"description\": \"VMBackup configuration for backup\",\n \"properties\": {\n \"acceptEULA\": {\n \"description\": \"AcceptEULA accepts enterprise feature usage, must be set to true.\\notherwise backupmanager cannot be added to single/cluster version.\\nhttps://victoriametrics.com/legal/esa/\",\n \"type\": \"boolean\"\n },\n \"concurrency\": {\n \"description\": \"Defines number of concurrent workers. Higher concurrency may reduce backup duration (default 10)\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"credentialsSecret\": {\n \"description\": \"CredentialsSecret is secret in the same namespace for access to remote storage\\nThe secret is mounted into /etc/vm/creds.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"customS3Endpoint\": {\n \"description\": \"Custom S3 endpoint for use with S3-compatible storages (e.g. MinIO). S3 is used if not set\",\n \"type\": \"string\"\n },\n \"destination\": {\n \"description\": \"Defines destination for backup\",\n \"type\": \"string\"\n },\n \"destinationDisableSuffixAdd\": {\n \"description\": \"DestinationDisableSuffixAdd - disables suffix adding for cluster version backups\\neach vmstorage backup must have unique backup folder\\nso operator adds POD_NAME as suffix for backup destination folder.\",\n \"type\": \"boolean\"\n },\n \"disableDaily\": {\n \"description\": \"Defines if daily backups disabled (default false)\",\n \"type\": \"boolean\"\n },\n \"disableHourly\": {\n \"description\": \"Defines if hourly backups disabled (default false)\",\n \"type\": \"boolean\"\n },\n \"disableMonthly\": {\n \"description\": \"Defines if monthly backups disabled (default false)\",\n \"type\": \"boolean\"\n },\n \"disableWeekly\": {\n \"description\": \"Defines if weekly backups disabled (default false)\",\n \"type\": \"boolean\"\n },\n \"extraArgs\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"extra args like maxBytesPerSecond default 0\",\n \"type\": \"object\"\n },\n \"extraEnvs\": {\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Image - docker image settings for VMBackuper\",\n \"properties\": {\n \"pullPolicy\": {\n \"description\": \"PullPolicy describes how to pull docker image\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"Repository contains name of docker image + it's repository if needed\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"description\": \"Tag contains desired docker image version\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"logFormat\": {\n \"description\": \"LogFormat for VMBackup to be configured with.\\ndefault or json\",\n \"enum\": [\n \"default\",\n \"json\"\n ],\n \"type\": \"string\"\n },\n \"logLevel\": {\n \"description\": \"LogLevel for VMBackup to be configured with.\",\n \"enum\": [\n \"INFO\",\n \"WARN\",\n \"ERROR\",\n \"FATAL\",\n \"PANIC\"\n ],\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Port for health check connections\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"Resources container resource request and limits, https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\\nif not defined default resources from operator config will be used\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restore\": {\n \"description\": \"Restore Allows to enable restore options for pod\\nRead [more](https://docs.victoriametrics.com/vmbackupmanager#restore-commands)\",\n \"properties\": {\n \"onStart\": {\n \"description\": \"OnStart defines configuration for restore on pod start\",\n \"properties\": {\n \"enabled\": {\n \"description\": \"Enabled defines if restore on start enabled\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"snapshotCreateURL\": {\n \"description\": \"SnapshotCreateURL overwrites url for snapshot create\",\n \"type\": \"string\"\n },\n \"snapshotDeleteURL\": {\n \"description\": \"SnapShotDeleteURL overwrites url for snapshot delete\",\n \"type\": \"string\"\n },\n \"volumeMounts\": {\n \"description\": \"VolumeMounts allows configuration of additional VolumeMounts on the output Deployment definition.\\nVolumeMounts specified will be appended to other VolumeMounts in the vmbackupmanager container,\\nthat are generated as a result of StorageSpec objects.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeMounts\": {\n \"description\": \"VolumeMounts allows configuration of additional VolumeMounts on the output Deployment definition.\\nVolumeMounts specified will be appended to other VolumeMounts in the VMSingle container,\\nthat are generated as a result of StorageSpec objects.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"description\": \"Volumes allows configuration of additional volumes on the output deploy definition.\\nVolumes specified will be appended to other volumes that are generated as a result of\\nStorageSpec objects.\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"format\": \"textarea\",\n \"required\": [\n \"name\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"retentionPeriod\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"VM Single\",\n \"type\": \"object\"\n}", + "version": "operator.victoriametrics.com/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "VM Single", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz" + }, + "model": { + "category": { + "name": "Observability and Analysis" + }, + "displayName": "Victoria Metrics K8S Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0_36_80\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003c/svg\u003e" + }, + "model": { + "version": "0.25.8" + }, + "name": "victoria-metrics-k8s-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Monitoring", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"18\" height=\"18\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0_36_80\"\u003e\n\u003crect width=\"32\" height=\"32\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMStaticScrape.json b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMStaticScrape.json new file mode 100644 index 00000000000..4b029c3650a --- /dev/null +++ b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMStaticScrape.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "VMStaticScrape", + "schema": "{\n \"description\": \"VMStaticScrape defines static targets configuration for scraping.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"VMStaticScrapeSpec defines the desired state of VMStaticScrape.\",\n \"properties\": {\n \"jobName\": {\n \"description\": \"JobName name of job.\",\n \"type\": \"string\"\n },\n \"sampleLimit\": {\n \"description\": \"SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seriesLimit\": {\n \"description\": \"SeriesLimit defines per-scrape limit on number of unique time series\\na single target can expose during all the scrapes on the time window of 24h.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"targetEndpoints\": {\n \"description\": \"A list of target endpoints to scrape metrics from.\",\n \"items\": {\n \"description\": \"TargetEndpoint defines single static target endpoint.\",\n \"properties\": {\n \"authorization\": {\n \"description\": \"Authorization with http header Authorization\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Reference to the secret with value for authorization\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"credentialsFile\": {\n \"description\": \"File with value for authorization\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of authorization, default to bearer\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"basicAuth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearerTokenFile\": {\n \"description\": \"File to read bearer token for scraping targets.\",\n \"type\": \"string\"\n },\n \"bearerTokenSecret\": {\n \"description\": \"Secret to mount to read bearer token for scraping targets. The secret\\nneeds to be in the same namespace as the scrape object and accessible by\\nthe victoria-metrics operator.\",\n \"nullable\": true,\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"follow_redirects\": {\n \"description\": \"FollowRedirects controls redirects for scraping.\",\n \"type\": \"boolean\"\n },\n \"honorLabels\": {\n \"description\": \"HonorLabels chooses the metric's labels on collisions with target labels.\",\n \"type\": \"boolean\"\n },\n \"honorTimestamps\": {\n \"description\": \"HonorTimestamps controls whether vmagent respects the timestamps present in scraped data.\",\n \"type\": \"boolean\"\n },\n \"interval\": {\n \"description\": \"Interval at which metrics should be scraped\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels static labels for targets.\",\n \"type\": \"object\"\n },\n \"max_scrape_size\": {\n \"description\": \"MaxScrapeSize defines a maximum size of scraped data for a job\",\n \"type\": \"string\"\n },\n \"metricRelabelConfigs\": {\n \"description\": \"MetricRelabelConfigs to apply to samples after scrapping.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"oauth2\": {\n \"description\": \"OAuth2 defines auth configuration\",\n \"properties\": {\n \"client_id\": {\n \"description\": \"The secret or configmap containing the OAuth2 client id\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"client_secret\": {\n \"description\": \"The secret containing the OAuth2 client secret\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"client_secret_file\": {\n \"description\": \"ClientSecretFile defines path for client secret file.\",\n \"type\": \"string\"\n },\n \"endpoint_params\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameters to append to the token URL\",\n \"type\": \"object\"\n },\n \"scopes\": {\n \"description\": \"OAuth2 scopes used for the token request\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"token_url\": {\n \"description\": \"The URL to fetch the token from\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"client_id\",\n \"token_url\"\n ],\n \"type\": \"object\"\n },\n \"params\": {\n \"additionalProperties\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"description\": \"Optional HTTP URL parameters\",\n \"type\": \"object\"\n },\n \"path\": {\n \"description\": \"HTTP path to scrape for metrics.\",\n \"type\": \"string\"\n },\n \"proxyURL\": {\n \"description\": \"ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint.\",\n \"type\": \"string\"\n },\n \"relabelConfigs\": {\n \"description\": \"RelabelConfigs to apply to samples during service discovery.\",\n \"items\": {\n \"description\": \"RelabelConfig allows dynamic rewriting of the label set\\nMore info: https://docs.victoriametrics.com/#relabeling\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action to perform based on regex matching. Default is 'replace'\",\n \"type\": \"string\"\n },\n \"if\": {\n \"description\": \"If represents metricsQL match expression (or list of expressions): '{__name__=~\\\"foo_.*\\\"}'\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels is used together with Match for `action: graphite`\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is used together with Labels for `action: graphite`\",\n \"type\": \"string\"\n },\n \"modulus\": {\n \"description\": \"Modulus to take of the hash of the source label values.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"regex\": {\n \"description\": \"Regular expression against which the extracted value is matched. Default is '(.*)'\\nvictoriaMetrics supports multiline regex joined with |\\nhttps://docs.victoriametrics.com/vmagent/#relabeling-enhancements\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replacement\": {\n \"description\": \"Replacement value against which a regex replace is performed if the\\nregular expression matches. Regex capture groups are available. Default is '$1'\",\n \"type\": \"string\"\n },\n \"separator\": {\n \"description\": \"Separator placed between concatenated source label values. default is ';'.\",\n \"type\": \"string\"\n },\n \"sourceLabels\": {\n \"description\": \"The source labels select values from existing labels. Their content is concatenated\\nusing the configured separator and matched against the configured regular expression\\nfor the replace, keep, and drop actions.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"source_labels\": {\n \"description\": \"UnderScoreSourceLabels - additional form of source labels source_labels\\nfor compatibility with original relabel config.\\nif set both sourceLabels and source_labels, sourceLabels has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"targetLabel\": {\n \"description\": \"Label to which the resulting value is written in a replace action.\\nIt is mandatory for replace actions. Regex capture groups are available.\",\n \"type\": \"string\"\n },\n \"target_label\": {\n \"description\": \"UnderScoreTargetLabel - additional form of target label - target_label\\nfor compatibility with original relabel config.\\nif set both targetLabel and target_label, targetLabel has priority.\\nfor details https://github.com/VictoriaMetrics/operator/issues/131\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sampleLimit\": {\n \"description\": \"SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"scheme\": {\n \"description\": \"HTTP scheme to use for scraping.\",\n \"enum\": [\n \"http\",\n \"https\"\n ],\n \"type\": \"string\"\n },\n \"scrapeTimeout\": {\n \"description\": \"Timeout after which the scrape is ended\",\n \"type\": \"string\"\n },\n \"scrape_interval\": {\n \"description\": \"ScrapeInterval is the same as Interval and has priority over it.\\none of scrape_interval or interval can be used\",\n \"type\": \"string\"\n },\n \"seriesLimit\": {\n \"description\": \"SeriesLimit defines per-scrape limit on number of unique time series\\na single target can expose during all the scrapes on the time window of 24h.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"targets\": {\n \"description\": \"Targets static targets addresses in form of [\\\"192.122.55.55:9100\\\",\\\"some-name:9100\\\"].\",\n \"items\": {\n \"type\": \"string\"\n },\n \"minItems\": 1,\n \"type\": \"array\"\n },\n \"tlsConfig\": {\n \"description\": \"TLSConfig configuration to use when scraping the endpoint\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vm_scrape_params\": {\n \"description\": \"VMScrapeParams defines VictoriaMetrics specific scrape parameters\",\n \"properties\": {\n \"disable_compression\": {\n \"description\": \"DisableCompression\",\n \"type\": \"boolean\"\n },\n \"disable_keep_alive\": {\n \"description\": \"disable_keepalive allows disabling HTTP keep-alive when scraping targets.\\nBy default, HTTP keep-alive is enabled, so TCP connections to scrape targets\\ncould be re-used.\\nSee https://docs.victoriametrics.com/vmagent#scrape_config-enhancements\",\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"description\": \"Headers allows sending custom headers to scrape targets\\nmust be in of semicolon separated header with it's value\\neg:\\nheaderName: headerValue\\nvmagent supports since 1.79.0 version\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"no_stale_markers\": {\n \"type\": \"boolean\"\n },\n \"proxy_client_config\": {\n \"description\": \"ProxyClientConfig configures proxy auth settings for scraping\\nSee feature description https://docs.victoriametrics.com/vmagent#scraping-targets-via-a-proxy\",\n \"properties\": {\n \"basic_auth\": {\n \"description\": \"BasicAuth allow an endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"Password defines reference for secret with password value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"password_file\": {\n \"description\": \"PasswordFile defines path to password file at disk\\nmust be pre-mounted\",\n \"type\": \"string\"\n },\n \"username\": {\n \"description\": \"Username defines reference for secret with username value\\nThe secret needs to be in the same namespace as scrape object\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"bearer_token\": {\n \"description\": \"SecretKeySelector selects a key of a Secret.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"bearer_token_file\": {\n \"type\": \"string\"\n },\n \"tls_config\": {\n \"description\": \"TLSConfig specifies TLSConfig configuration parameters.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"scrape_align_interval\": {\n \"type\": \"string\"\n },\n \"scrape_offset\": {\n \"type\": \"string\"\n },\n \"stream_parse\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"targets\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"targetEndpoints\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"VM Static Scrape\",\n \"type\": \"object\"\n}", + "version": "operator.victoriametrics.com/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "VM Static Scrape", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz" + }, + "model": { + "category": { + "name": "Observability and Analysis" + }, + "displayName": "Victoria Metrics K8S Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0_36_80\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003c/svg\u003e" + }, + "model": { + "version": "0.25.8" + }, + "name": "victoria-metrics-k8s-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Monitoring", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"18\" height=\"18\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0_36_80\"\u003e\n\u003crect width=\"32\" height=\"32\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMUser.json b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMUser.json new file mode 100644 index 00000000000..144dbd79b9f --- /dev/null +++ b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/components/VMUser.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "VMUser", + "schema": "{\n \"description\": \"VMUser is the Schema for the vmusers API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"VMUserSpec defines the desired state of VMUser\",\n \"properties\": {\n \"bearerToken\": {\n \"description\": \"BearerToken Authorization header value for accessing protected endpoint.\",\n \"type\": \"string\"\n },\n \"default_url\": {\n \"description\": \"DefaultURLs backend url for non-matching paths filter\\nusually used for default backend with error message\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"disable_secret_creation\": {\n \"description\": \"DisableSecretCreation skips related secret creation for vmuser\",\n \"type\": \"boolean\"\n },\n \"discover_backend_ips\": {\n \"description\": \"DiscoverBackendIPs instructs discovering URLPrefix backend IPs via DNS.\",\n \"type\": \"boolean\"\n },\n \"drop_src_path_prefix_parts\": {\n \"description\": \"DropSrcPathPrefixParts is the number of `/`-delimited request path prefix parts to drop before proxying the request to backend.\\nSee [here](https://docs.victoriametrics.com/vmauth#dropping-request-path-prefix) for more details.\",\n \"type\": \"integer\"\n },\n \"generatePassword\": {\n \"description\": \"GeneratePassword instructs operator to generate password for user\\nif spec.password if empty.\",\n \"type\": \"boolean\"\n },\n \"headers\": {\n \"description\": \"Headers represent additional http headers, that vmauth uses\\nin form of [\\\"header_key: header_value\\\"]\\nmultiple values for header key:\\n[\\\"header_key: value1,value2\\\"]\\nit's available since 1.68.0 version of vmauth\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ip_filters\": {\n \"description\": \"IPFilters defines per target src ip filters\\nsupported only with enterprise version of [vmauth](https://docs.victoriametrics.com/vmauth/#ip-filters)\",\n \"properties\": {\n \"allow_list\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"deny_list\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"load_balancing_policy\": {\n \"description\": \"LoadBalancingPolicy defines load balancing policy to use for backend urls.\\nSupported policies: least_loaded, first_available.\\nSee [here](https://docs.victoriametrics.com/vmauth#load-balancing) for more details (default \\\"least_loaded\\\")\",\n \"enum\": [\n \"least_loaded\",\n \"first_available\"\n ],\n \"type\": \"string\"\n },\n \"max_concurrent_requests\": {\n \"description\": \"MaxConcurrentRequests defines max concurrent requests per user\\n300 is default value for vmauth\",\n \"type\": \"integer\"\n },\n \"metric_labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"MetricLabels - additional labels for metrics exported by vmauth for given user.\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the VMUser object.\",\n \"type\": \"string\"\n },\n \"password\": {\n \"description\": \"Password basic auth password for accessing protected endpoint.\",\n \"type\": \"string\"\n },\n \"passwordRef\": {\n \"description\": \"PasswordRef allows fetching password from user-create secret by its name and key.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"response_headers\": {\n \"description\": \"ResponseHeaders represent additional http headers, that vmauth adds for request response\\nin form of [\\\"header_key: header_value\\\"]\\nmultiple values for header key:\\n[\\\"header_key: value1,value2\\\"]\\nit's available since 1.93.0 version of vmauth\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"retry_status_codes\": {\n \"description\": \"RetryStatusCodes defines http status codes in numeric format for request retries\\ne.g. [429,503]\",\n \"items\": {\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"targetRefs\": {\n \"description\": \"TargetRefs - reference to endpoints, which user may access.\",\n \"items\": {\n \"description\": \"TargetRef describes target for user traffic forwarding.\\none of target types can be chosen:\\ncrd or static per targetRef.\\nuser can define multiple targetRefs with different ref Types.\",\n \"properties\": {\n \"crd\": {\n \"description\": \"CRD describes exist operator's CRD object,\\noperator generates access url based on CRD params.\",\n \"properties\": {\n \"kind\": {\n \"description\": \"Kind one of:\\nVMAgent,VMAlert, VMSingle, VMCluster/vmselect, VMCluster/vmstorage,VMCluster/vminsert or VMAlertManager\",\n \"enum\": [\n \"VMAgent\",\n \"VMAlert\",\n \"VMSingle\",\n \"VMAlertManager\",\n \"VMAlertmanager\",\n \"VMCluster/vmselect\",\n \"VMCluster/vmstorage\",\n \"VMCluster/vminsert\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name target CRD object name\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace target CRD object namespace.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\",\n \"namespace\"\n ],\n \"type\": \"object\"\n },\n \"discover_backend_ips\": {\n \"description\": \"DiscoverBackendIPs instructs discovering URLPrefix backend IPs via DNS.\",\n \"type\": \"boolean\"\n },\n \"drop_src_path_prefix_parts\": {\n \"description\": \"DropSrcPathPrefixParts is the number of `/`-delimited request path prefix parts to drop before proxying the request to backend.\\nSee [here](https://docs.victoriametrics.com/vmauth#dropping-request-path-prefix) for more details.\",\n \"type\": \"integer\"\n },\n \"headers\": {\n \"description\": \"RequestHeaders represent additional http headers, that vmauth uses\\nin form of [\\\"header_key: header_value\\\"]\\nmultiple values for header key:\\n[\\\"header_key: value1,value2\\\"]\\nit's available since 1.68.0 version of vmauth\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hosts\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"load_balancing_policy\": {\n \"description\": \"LoadBalancingPolicy defines load balancing policy to use for backend urls.\\nSupported policies: least_loaded, first_available.\\nSee [here](https://docs.victoriametrics.com/vmauth#load-balancing) for more details (default \\\"least_loaded\\\")\",\n \"enum\": [\n \"least_loaded\",\n \"first_available\"\n ],\n \"type\": \"string\"\n },\n \"paths\": {\n \"description\": \"Paths - matched path to route.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"response_headers\": {\n \"description\": \"ResponseHeaders represent additional http headers, that vmauth adds for request response\\nin form of [\\\"header_key: header_value\\\"]\\nmultiple values for header key:\\n[\\\"header_key: value1,value2\\\"]\\nit's available since 1.93.0 version of vmauth\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"retry_status_codes\": {\n \"description\": \"RetryStatusCodes defines http status codes in numeric format for request retries\\nCan be defined per target or at VMUser.spec level\\ne.g. [429,503]\",\n \"items\": {\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"src_headers\": {\n \"description\": \"SrcHeaders is an optional list of headers, which must match request headers.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"src_query_args\": {\n \"description\": \"SrcQueryArgs is an optional list of query args, which must match request URL query args.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"static\": {\n \"description\": \"Static - user defined url for traffic forward,\\nfor instance http://vmsingle:8429\",\n \"properties\": {\n \"url\": {\n \"description\": \"URL http url for given staticRef.\",\n \"type\": \"string\"\n },\n \"urls\": {\n \"description\": \"URLs allows setting multiple urls for load-balancing at vmauth-side.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"targetRefBasicAuth\": {\n \"description\": \"TargetRefBasicAuth allow an target endpoint to authenticate over basic authentication\",\n \"properties\": {\n \"password\": {\n \"description\": \"The secret in the service scrape namespace that contains the password\\nfor authentication.\\nIt must be at them same namespace as CRD\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"The secret in the service scrape namespace that contains the username\\nfor authentication.\\nIt must be at them same namespace as CRD\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"password\",\n \"username\"\n ],\n \"type\": \"object\"\n },\n \"target_path_suffix\": {\n \"description\": \"TargetPathSuffix allows to add some suffix to the target path\\nIt allows to hide tenant configuration from user with crd as ref.\\nit also may contain any url encoded params.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tlsConfig\": {\n \"description\": \"TLSConfig specifies TLSConfig configuration parameters.\",\n \"properties\": {\n \"ca\": {\n \"description\": \"Stuct containing the CA cert to use for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"caFile\": {\n \"description\": \"Path to the CA cert in the container to use for the targets.\",\n \"type\": \"string\"\n },\n \"cert\": {\n \"description\": \"Struct containing the client cert file for the targets.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secret\": {\n \"description\": \"Secret containing data to use for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"certFile\": {\n \"description\": \"Path to the client cert file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"Disable target certificate validation.\",\n \"type\": \"boolean\"\n },\n \"keyFile\": {\n \"description\": \"Path to the client key file in the container for the targets.\",\n \"type\": \"string\"\n },\n \"keySecret\": {\n \"description\": \"Secret containing the client key file for the targets.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serverName\": {\n \"description\": \"Used to verify the hostname for the targets.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tokenRef\": {\n \"description\": \"TokenRef allows fetching token from user-created secrets by its name and key.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"username\": {\n \"description\": \"UserName basic auth user name for accessing protected endpoint,\\nwill be replaced with metadata.name of VMUser if omitted.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"targetRefs\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"VM User\",\n \"type\": \"object\"\n}", + "version": "operator.victoriametrics.com/v1beta1" + }, + "configuration": null, + "description": "", + "displayName": "VM User", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz" + }, + "model": { + "category": { + "name": "Observability and Analysis" + }, + "displayName": "Victoria Metrics K8S Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-k8s-stack-0.25.8/victoria-metrics-k8s-stack-0.25.8.tgz", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0_36_80\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003c/svg\u003e" + }, + "model": { + "version": "0.25.8" + }, + "name": "victoria-metrics-k8s-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Monitoring", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "enabled", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "\u003csvg width=\"18\" height=\"18\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003cpath d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0_36_80\"\u003e\n\u003crect width=\"32\" height=\"32\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/model.json b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/model.json new file mode 100644 index 00000000000..a406802a81f --- /dev/null +++ b/server/meshmodel/victoria-metrics-k8s-stack/0.25.8/v1.0.0/model.json @@ -0,0 +1,42 @@ +{ + "category": { + "name": "Observability and Analysis" + }, + "displayName": "Victoria Metrics K8S Stack", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "capabilities": null, + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "styleOverrides": "", + "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0_36_80)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 7.69351V15.2015L22.9702 11.4346L16.4632 7.69351Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 16.7705V24.3157L23.0307 20.5607L16.4632 16.7705Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 15.1502V7.75632L9.10194 11.4416L15.5274 15.1502Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.63699 24.2878C3.89756 26.3157 5.60178 28.031 7.62134 29.3047V21.4033L2.63699 24.2878Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 24.2785V16.8264L9.08579 20.556L15.5274 24.2785Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 28.8344L15.0829 25.1049L8.55965 21.3335V28.8344Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4753 28.8742V21.3848L16.9615 25.1096L23.4753 28.8742Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.852 23.4194C30.9655 21.341 31.5949 19.0378 31.6935 16.6819L24.9119 20.5651L29.852 23.4194Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 19.7691L30.96 16.0256L24.4136 12.2634V19.7691Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4755 10.6455V3.20041L16.9919 6.91827L23.4755 10.6455Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4754 19.7364V12.2239L16.9779 15.986L23.4754 19.7364Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 12.2099V19.7784L15.1061 15.9882L8.55965 12.2099Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.5274 0.285706C13.1176 0.353534 10.756 0.977397 8.6271 2.10855L15.5274 6.06621V0.285706Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.55965 3.1492V10.6734L15.1107 6.91597L8.55965 3.1492Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62134 2.69299C5.60228 3.96735 3.89818 5.6826 2.63699 7.7099L7.62134 10.5873V2.69299Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M23.4335 2.14811C21.2869 0.992986 18.9001 0.355226 16.4632 0.285706V6.14069L23.4335 2.14811Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M0.285713 16.5517C0.367085 18.9754 1.01023 21.3471 2.16447 23.4799L7.21396 20.5559L0.285713 16.5517Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M2.16447 8.51996C1.01384 10.6433 0.370833 13.0043 0.285713 15.4178L7.22097 11.4393L2.16447 8.51996Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.61544 29.8822C10.7469 31.0189 13.1128 31.6461 15.5274 31.7143V25.9291L8.61544 29.8822Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.3675 7.73539C28.1143 5.71396 26.4208 4.00147 24.4136 2.72543V10.5987L29.3675 7.73539Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M24.4136 29.2791C26.4312 27.994 28.1314 26.2684 29.3863 24.2321L24.4136 21.3591V29.2791Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.7143 15.3738C31.6251 12.9835 30.9879 10.6458 29.8518 8.54102L24.8441 11.4325L31.7143 15.3738Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.4632 31.7143C18.8725 31.6467 21.2333 31.0229 23.3613 29.8914L16.4632 25.8942V31.7143Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M7.62141 19.711V12.2892L1.17738 15.9838L7.62141 19.711Z\" fill=\"white\" fill-opacity=\"0.8\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0_36_80\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e", + "svgComplete": "", + "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"\u003e\u003c/path\u003e\u003c/svg\u003e" + }, + "model": { + "version": "0.25.8" + }, + "name": "victoria-metrics-k8s-stack", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "enabled", + "subCategory": "Monitoring", + "version": "v1.0.0", + "components": null, + "relationships": null + } \ No newline at end of file diff --git a/server/meshmodel/voyager-crds/2024.8.30/v1.0.0/components/Ingress.json b/server/meshmodel/voyager-crds/2024.8.30/v1.0.0/components/Ingress.json new file mode 100644 index 00000000000..bcefa6e8d7f --- /dev/null +++ b/server/meshmodel/voyager-crds/2024.8.30/v1.0.0/components/Ingress.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "Ingress", + "schema": "{\n \"properties\": {\n \"spec\": {\n \"description\": \"IngressSpec describes the Ingress the user wishes to exist.\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"If specified, the pod's scheduling constraints\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"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).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"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 \\u003ctopologyKey\\u003e matches that of any node on which a pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"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.\",\n \"items\": {\n \"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 \\u003ctopologyKey\\u003e matches that of any node on which a pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"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.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"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\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"configVolumes\": {\n \"description\": \"Config volumes are used to mount any secret or configmap into HAProxy pods.\",\n \"items\": {\n \"description\": \"Represents the source of a volume to mount. Only one of its members may be specified.\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"ConfigMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"projected\": {\n \"description\": \"Items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field of ClusterTrustBundle objects in an auto-updating file. \\n Alpha, gated by the ClusterTrustBundleProjection feature gate. \\n ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. \\n Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match everything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"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.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive with signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s) aren't available. If using name, then the named ClusterTrustBundle is allowed not to exist. If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name. Mutually-exclusive with name. The contents of all selected ClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the token into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"mountPath\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"coordinator\": {\n \"description\": \"Coordinator defines attributes of the coordinator container\",\n \"properties\": {\n \"resources\": {\n \"description\": \"Compute Resources required by coordinator container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"description\": \"Security options the coordinator container should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile overrides the pod's appArmorProfile. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used. The profile must be preconfigured on the node to work. Must match the loaded name of the profile. Must be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied. Valid options are: Localhost - a profile pre-loaded on the node. RuntimeDefault - the container runtime's default profile. Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"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.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"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.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are provided at both the pod \\u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"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 be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"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.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. 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.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"defaultBackend\": {\n \"description\": \"A default backend capable of servicing requests that don't match any rule. At least one of 'backend' or 'rules' must be specified. This field is optional to allow the loadbalancer controller or defaulting logic to specify a global default.\",\n \"properties\": {\n \"alpn\": {\n \"description\": \"Application-Layer Protocol Negotiation (ALPN) is a Transport Layer Security (TLS) extension for application layer protocol negotiation. ALPN allows the application layer to negotiate which protocol should be performed over a secure connection in a manner which avoids additional round trips and which is independent of the application layer protocols. It is used by HTTP/2. If provided a list of alpn will be added to port as alpn option1,option2,... If SecretName is Provided this secret will be used to terminate SSL with alpn options. If Secret name is not provided backend server is responsible for handling SSL. Note that, the order of the options indicates the preference If the ALPN list contains \\\"h2\\\", \\\"option http-use-htx\\\" will be added to enable HTX mode https://cbonte.github.io/haproxy-dconv/1.9/configuration.html#option%20http-use-htx https://cbonte.github.io/haproxy-dconv/1.9/configuration.html#alpn\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"backendRules\": {\n \"description\": \"Serialized HAProxy rules to apply on server backend including request, response or header rewrite. acls also can be used. https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hostNames\": {\n \"description\": \"Host names to forward traffic to. If empty traffic will be forwarded to all subsets instance. If set only matched hosts will get the traffic. This is an handy way to send traffic to Specific StatefulSet pod. IE. Setting [web-0] will send traffic to only web-0 host for this StatefulSet, https://kubernetes.io/docs/tasks/stateful-application/basic-stateful-set/#creating-a-statefulset\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"loadBalanceOn\": {\n \"description\": \"Define the load balancing algorithm to be used in a backend. https://cbonte.github.io/haproxy-dconv/1.9/configuration.html#balance\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"User can specify backend name for using it with custom acl Otherwise it will be generated\",\n \"type\": \"string\"\n },\n \"proto\": {\n \"description\": \"HTTP protocol to use If the Proto contains \\\"h2\\\", \\\"option http-use-htx\\\" will be added to enable HTX mode https://www.haproxy.com/blog/haproxy-1-9-2-adds-grpc-support/\",\n \"type\": \"string\"\n },\n \"service\": {\n \"description\": \"Service references a Service as a Backend. This is a mutually exclusive setting with \\\"Resource\\\".\",\n \"properties\": {\n \"name\": {\n \"description\": \"name is the referenced service. The service must exist in the same namespace as the Ingress object.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"port of the referenced service. A port name or port number is required for a IngressServiceBackend.\",\n \"properties\": {\n \"name\": {\n \"description\": \"name is the name of the port on the Service. This is a mutually exclusive setting with \\\"Number\\\".\",\n \"type\": \"string\"\n },\n \"number\": {\n \"description\": \"number is the numerical port number (e.g. 80) on the Service. This is a mutually exclusive setting with \\\"Name\\\".\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"externalIPs\": {\n \"description\": \"externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service. These IPs are not managed by Kubernetes. The user is responsible for ensuring that traffic arrives at a node with this IP. A common example is external load-balancers that are not part of the Kubernetes system.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"frontendRules\": {\n \"description\": \"Frontend rules specifies a set of rules that should be applied in HAProxy frontend configuration. The set of keywords are from here https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.1 Only frontend sections can be applied here. It is up to user to provide valid set of rules. This allows acls or other options in frontend sections in HAProxy config. Frontend rules will be mapped with Ingress Rules according to port.\",\n \"items\": {\n \"properties\": {\n \"auth\": {\n \"properties\": {\n \"basic\": {\n \"properties\": {\n \"realm\": {\n \"type\": \"string\"\n },\n \"secretName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"oauth\": {\n \"items\": {\n \"properties\": {\n \"authBackend\": {\n \"type\": \"string\"\n },\n \"authPath\": {\n \"type\": \"string\"\n },\n \"host\": {\n \"type\": \"string\"\n },\n \"paths\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"signinPath\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tls\": {\n \"properties\": {\n \"errorPage\": {\n \"type\": \"string\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"secretName\": {\n \"type\": \"string\"\n },\n \"verifyClient\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"port\": {\n \"description\": \"Port indicates the frontend port where HAProxy is listening for connection\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"rules\": {\n \"description\": \"Serialized rules\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"loadBalancerSourceRanges\": {\n \"description\": \"Optional: If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature. https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\",\n \"type\": \"object\"\n },\n \"priority\": {\n \"description\": \"The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"priorityClassName\": {\n \"description\": \"If specified, indicates the pod's priority. \\\"system-node-critical\\\" and \\\"system-cluster-critical\\\" are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.\",\n \"type\": \"string\"\n },\n \"proxySecurityContext\": {\n \"description\": \"Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile overrides the pod's appArmorProfile. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used. The profile must be preconfigured on the node to work. Must match the loaded name of the profile. Must be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied. Valid options are: Localhost - a profile pre-loaded on the node. RuntimeDefault - the container runtime's default profile. Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"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.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"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.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are provided at both the pod \\u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"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 be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"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.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. 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.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"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.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by the HAProxy container.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"rules\": {\n \"description\": \"A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.\",\n \"items\": {\n \"description\": \"IngressRule represents the rules mapping the paths under a specified host to the related backend services. Incoming requests are first evaluated for a host match, then routed to the backend associated with the matching IngressRuleValue.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host is the fully qualified domain name of a network host, as defined by RFC 3986. Note the following deviations from the \\\"host\\\" part of the URI as defined in the RFC: 1. IPs are not allowed. Currently an IngressRuleValue can only apply to the IP in the Spec of the parent Ingress. 2. The `:` delimiter is not respected because ports are not allowed. Currently the port of an Ingress is implicitly :80 for http and :443 for https. Both these may change in the future. Incoming requests are matched against the host before the IngressRuleValue. If the host is unspecified, the Ingress routes all traffic based on the specified IngressRuleValue.\",\n \"type\": \"string\"\n },\n \"http\": {\n \"description\": \"HTTPIngressRuleValue is a list of http selectors pointing to backends. In the example: http://\\u003chost\\u003e/\\u003cpath\\u003e?\\u003csearchpart\\u003e -\\u003e backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'.\",\n \"properties\": {\n \"address\": {\n \"description\": \"The network address to listen HTTP(s) connections on.\",\n \"type\": \"string\"\n },\n \"alpn\": {\n \"description\": \"Application-Layer Protocol Negotiation (ALPN) is a Transport Layer Security (TLS) extension for application layer protocol negotiation. ALPN allows the application layer to negotiate which protocol should be performed over a secure connection in a manner which avoids additional round trips and which is independent of the application layer protocols. It is used by HTTP/2. If provided a list of alpn will be added to port as alpn option1,option2,... If SecretName is Provided this secret will be used to terminate SSL with alpn options. If Secret name is not provided backend server is responsible for handling SSL. Note that, the order of the options indicates the preference If the ALPN list contains \\\"h2\\\", \\\"option http-use-htx\\\" will be added to enable HTX mode https://cbonte.github.io/haproxy-dconv/1.9/configuration.html#option%20http-use-htx https://cbonte.github.io/haproxy-dconv/1.9/configuration.html#alpn\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"noTLS\": {\n \"description\": \"Set noTLS = true to force plain text. Else, auto detect like present\",\n \"type\": \"boolean\"\n },\n \"nodePort\": {\n \"description\": \"Specifies the node port of the referenced service.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"paths\": {\n \"description\": \"A collection of paths that map requests to backends.\",\n \"items\": {\n \"description\": \"HTTPIngressPath associates a path regex with a backend. Incoming urls matching the path are forwarded to the backend.\",\n \"properties\": {\n \"backend\": {\n \"description\": \"Backend defines the referenced service endpoint to which the traffic will be forwarded to.\",\n \"properties\": {\n \"alpn\": {\n \"description\": \"Application-Layer Protocol Negotiation (ALPN) is a Transport Layer Security (TLS) extension for application layer protocol negotiation. ALPN allows the application layer to negotiate which protocol should be performed over a secure connection in a manner which avoids additional round trips and which is independent of the application layer protocols. It is used by HTTP/2. If provided a list of alpn will be added to port as alpn option1,option2,... If SecretName is Provided this secret will be used to terminate SSL with alpn options. If Secret name is not provided backend server is responsible for handling SSL. Note that, the order of the options indicates the preference If the ALPN list contains \\\"h2\\\", \\\"option http-use-htx\\\" will be added to enable HTX mode https://cbonte.github.io/haproxy-dconv/1.9/configuration.html#option%20http-use-htx https://cbonte.github.io/haproxy-dconv/1.9/configuration.html#alpn\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"backendRules\": {\n \"description\": \"Serialized HAProxy rules to apply on server backend including request, response or header rewrite. acls also can be used. https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hostNames\": {\n \"description\": \"Host names to forward traffic to. If empty traffic will be forwarded to all subsets instance. If set only matched hosts will get the traffic. This is an handy way to send traffic to Specific StatefulSet pod. IE. Setting [web-0] will send traffic to only web-0 host for this StatefulSet, https://kubernetes.io/docs/tasks/stateful-application/basic-stateful-set/#creating-a-statefulset\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"loadBalanceOn\": {\n \"description\": \"Define the load balancing algorithm to be used in a backend. https://cbonte.github.io/haproxy-dconv/1.9/configuration.html#balance\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"User can specify backend name for using it with custom acl Otherwise it will be generated\",\n \"type\": \"string\"\n },\n \"proto\": {\n \"description\": \"HTTP protocol to use If the Proto contains \\\"h2\\\", \\\"option http-use-htx\\\" will be added to enable HTX mode https://www.haproxy.com/blog/haproxy-1-9-2-adds-grpc-support/\",\n \"type\": \"string\"\n },\n \"service\": {\n \"description\": \"Service references a Service as a Backend. This is a mutually exclusive setting with \\\"Resource\\\".\",\n \"properties\": {\n \"name\": {\n \"description\": \"name is the referenced service. The service must exist in the same namespace as the Ingress object.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"port of the referenced service. A port name or port number is required for a IngressServiceBackend.\",\n \"properties\": {\n \"name\": {\n \"description\": \"name is the name of the port on the Service. This is a mutually exclusive setting with \\\"Number\\\".\",\n \"type\": \"string\"\n },\n \"number\": {\n \"description\": \"number is the numerical port number (e.g. 80) on the Service. This is a mutually exclusive setting with \\\"Name\\\".\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"path\": {\n \"description\": \"Path is a extended POSIX regex as defined by IEEE Std 1003.1, (i.e this follows the egrep/unix syntax, not the perl syntax) matched against the path of an incoming request. Currently it can contain characters disallowed from the conventional \\\"path\\\" part of a URL as defined by RFC 3986. Paths must begin with a '/'. If unspecified, the path defaults to a catch all sending traffic to the backend.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"port\": {\n \"description\": \"port to listen http(s) connections.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"proto\": {\n \"description\": \"HTTP protocol to use If the Proto contains \\\"h2\\\", \\\"option http-use-htx\\\" will be added to enable HTX mode https://www.haproxy.com/blog/haproxy-1-9-2-adds-grpc-support/\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"paths\"\n ],\n \"type\": \"object\"\n },\n \"tcp\": {\n \"properties\": {\n \"address\": {\n \"description\": \"The network address to listen TCP connections on.\",\n \"type\": \"string\"\n },\n \"alpn\": {\n \"description\": \"Application-Layer Protocol Negotiation (ALPN) is a Transport Layer Security (TLS) extension for application layer protocol negotiation. ALPN allows the application layer to negotiate which protocol should be performed over a secure connection in a manner which avoids additional round trips and which is independent of the application layer protocols. It is used by HTTP/2. If provided a list of alpn will be added to port as alpn option1,option2,... If SecretName is Provided this secret will be used to terminate SSL with alpn options. If Secret name is not provided backend server is responsible for handling SSL. Note that, the order of the options indicates the preference If the ALPN list contains \\\"h2\\\", \\\"option http-use-htx\\\" will be added to enable HTX mode https://cbonte.github.io/haproxy-dconv/1.9/configuration.html#option%20http-use-htx https://cbonte.github.io/haproxy-dconv/1.9/configuration.html#alpn\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"backend\": {\n \"description\": \"Backend to forward the requests.\",\n \"properties\": {\n \"alpn\": {\n \"description\": \"Application-Layer Protocol Negotiation (ALPN) is a Transport Layer Security (TLS) extension for application layer protocol negotiation. ALPN allows the application layer to negotiate which protocol should be performed over a secure connection in a manner which avoids additional round trips and which is independent of the application layer protocols. It is used by HTTP/2. If provided a list of alpn will be added to port as alpn option1,option2,... If SecretName is Provided this secret will be used to terminate SSL with alpn options. If Secret name is not provided backend server is responsible for handling SSL. Note that, the order of the options indicates the preference If the ALPN list contains \\\"h2\\\", \\\"option http-use-htx\\\" will be added to enable HTX mode https://cbonte.github.io/haproxy-dconv/1.9/configuration.html#option%20http-use-htx https://cbonte.github.io/haproxy-dconv/1.9/configuration.html#alpn\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"backendRules\": {\n \"description\": \"Serialized HAProxy rules to apply on server backend including request, response or header rewrite. acls also can be used. https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hostNames\": {\n \"description\": \"Host names to forward traffic to. If empty traffic will be forwarded to all subsets instance. If set only matched hosts will get the traffic. This is an handy way to send traffic to Specific StatefulSet pod. IE. Setting [web-0] will send traffic to only web-0 host for this StatefulSet, https://kubernetes.io/docs/tasks/stateful-application/basic-stateful-set/#creating-a-statefulset\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"loadBalanceOn\": {\n \"description\": \"Define the load balancing algorithm to be used in a backend. https://cbonte.github.io/haproxy-dconv/1.9/configuration.html#balance\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"User can specify backend name for using it with custom acl Otherwise it will be generated\",\n \"type\": \"string\"\n },\n \"proto\": {\n \"description\": \"HTTP protocol to use If the Proto contains \\\"h2\\\", \\\"option http-use-htx\\\" will be added to enable HTX mode https://www.haproxy.com/blog/haproxy-1-9-2-adds-grpc-support/\",\n \"type\": \"string\"\n },\n \"service\": {\n \"description\": \"Service references a Service as a Backend. This is a mutually exclusive setting with \\\"Resource\\\".\",\n \"properties\": {\n \"name\": {\n \"description\": \"name is the referenced service. The service must exist in the same namespace as the Ingress object.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"port of the referenced service. A port name or port number is required for a IngressServiceBackend.\",\n \"properties\": {\n \"name\": {\n \"description\": \"name is the name of the port on the Service. This is a mutually exclusive setting with \\\"Number\\\".\",\n \"type\": \"string\"\n },\n \"number\": {\n \"description\": \"number is the numerical port number (e.g. 80) on the Service. This is a mutually exclusive setting with \\\"Name\\\".\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"noTLS\": {\n \"description\": \"Set noTLS = true to force plain text. Else, auto detect like present\",\n \"type\": \"boolean\"\n },\n \"nodePort\": {\n \"description\": \"Specifies the node port of the referenced service.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"port\": {\n \"description\": \"port to listen tcp connections.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"proto\": {\n \"description\": \"HTTP protocol to use If the Proto contains \\\"h2\\\", \\\"option http-use-htx\\\" will be added to enable HTX mode https://www.haproxy.com/blog/haproxy-1-9-2-adds-grpc-support/\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"schedulerName\": {\n \"description\": \"If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.\",\n \"properties\": {\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used. The profile must be preconfigured on the node to work. Must match the loaded name of the profile. Must be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied. Valid options are: Localhost - a profile pre-loaded on the node. RuntimeDefault - the container runtime's default profile. Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"fsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"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.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"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.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"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.\",\n \"properties\": {\n \"localhostProfile\": {\n \"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 be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"sysctls\": {\n \"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.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"windowsOptions\": {\n \"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.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. 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.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tls\": {\n \"description\": \"TLS is the TLS configuration. Currently the Ingress only supports a single TLS port, 443, and assumes TLS termination. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension.\",\n \"items\": {\n \"description\": \"IngressTLS describes the transport layer security associated with an Ingress.\",\n \"properties\": {\n \"hosts\": {\n \"description\": \"Hosts are a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret used to terminate SSL traffic on 443. Field is left optional to allow SSL routing based on SNI hostname alone. If the SNI host in a listener conflicts with the \\\"Host\\\" header field used by an IngressRule, the SNI host is used for termination and value of the Host header is used for routing.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tolerations\": {\n \"description\": \"If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches the triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Ingress\",\n \"type\": \"object\"\n}", + "version": "voyager.appscode.com/v1" + }, + "configuration": null, + "description": "", + "displayName": "Ingress", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": true, + "published": false, + "source_uri": "https://charts.appscode.com/stable/voyager-crds/voyager-crds-v2024.8.30.tgz" + }, + "model": { + "category": { + "name": "Uncategorized" + }, + "displayName": "Voyager Crds", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://charts.appscode.com/stable/voyager-crds/voyager-crds-v2024.8.30.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "2024.8.30" + }, + "name": "voyager-crds", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Uncategorized", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/voyager-crds/2024.8.30/v1.0.0/components/MetricsConfiguration.json b/server/meshmodel/voyager-crds/2024.8.30/v1.0.0/components/MetricsConfiguration.json new file mode 100644 index 00000000000..31e8db58b4f --- /dev/null +++ b/server/meshmodel/voyager-crds/2024.8.30/v1.0.0/components/MetricsConfiguration.json @@ -0,0 +1,195 @@ +{ + "capabilities": [ + { + "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.", + "displayName": "Performance Test", + "entityState": [ + "instance" + ], + "key": "", + "kind": "action", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "perf-test", + "type": "operator", + "version": "0.7.0" + }, + { + "description": "Configure the workload specific setting of a component", + "displayName": "Workload Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "config", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure Labels And Annotations for the component ", + "displayName": "Labels and Annotations Configuration", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "labels-and-annotations", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View relationships for the component", + "displayName": "Relationships", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "relationship", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "View Component Definition ", + "displayName": "Json Schema", + "entityState": [ + "declaration", + "instance" + ], + "key": "", + "kind": "view", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "definition", + "type": "configuration", + "version": "0.7.0" + }, + { + "description": "Configure the visual styles for the component", + "displayName": "Styling", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Change the shape of the component", + "displayName": "Change Shape", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "mutate", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "shape", + "type": "style", + "version": "0.7.0" + }, + { + "description": "Drag and Drop a component into a parent component in graph view", + "displayName": "Compound Drag And Drop", + "entityState": [ + "declaration" + ], + "key": "", + "kind": "interaction", + "metadata": null, + "schemaVersion": "capability.meshery.io/v1alpha1", + "status": "enabled", + "subType": "compoundDnd", + "type": "graph", + "version": "0.7.0" + } + ], + "component": { + "kind": "MetricsConfiguration", + "schema": "{\n \"properties\": {\n \"spec\": {\n \"description\": \"MetricsConfigurationSpec is the spec of MetricsConfiguration object.\",\n \"properties\": {\n \"metrics\": {\n \"description\": \"List of Metrics configuration for the resource object defined in TargetRef\",\n \"items\": {\n \"description\": \"Metrics contains the configuration of a metric in prometheus style.\",\n \"properties\": {\n \"field\": {\n \"description\": \"Field defines the metric value path of the manifest file and the type of that value\",\n \"properties\": {\n \"path\": {\n \"description\": \"Path defines the json path of the object. Example: For deployment spec replica count, the path will be .spec.replicas\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type defines the type of the value in the given Path Type can be \\\"Integer\\\" for integer value like .spec.replicas, \\\"DateTime\\\" for time stamp value like .metadata.creationTimestamp \\\"Array\\\" for array field like .spec.containers \\\"String\\\" for string field like .statue.phase (for pod status)\",\n \"enum\": [\n \"Integer\",\n \"DateTime\",\n \"Array\",\n \"String\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"help\": {\n \"description\": \"Help is used to describe the metrics. Example: For kube_deployment_spec_replicas, help string can be \\\"Number of desired pods for a deployment.\\\"\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"description\": \"Labels defines the metric labels as a key-value pair\",\n \"items\": {\n \"description\": \"Label contains the information of a metric label. Given labels are always added in the metrics along with resource name and namespace. Resource's name and namespace are always added in the labels by default. No configuration is needed for name and namespace labels. \\n Example: kube_pod_info{pod=\\\"\\u003cpod_name\\u003e\\\", namespace=\\\"\\u003cpod_namespace\\u003e\\\", host_ip=\\\"172.18.0.2\\\", pod_ip=\\\"10.244.0.14\\\", node=\\\"kind-control-plane\\\"} 1 In the example pod, namespace, host_ip, pod_ip, node are labels. pod(resource name) and namespace are default labels. No configurations is needed for those. \\n To generate others labels, config should be given in the following way \\n labels: - key: host_ip valuePath: .status.hostIP - key: pod_ip valuePath: .status.podIP - key: node valuePath: .spec.nodeName \\n Either Value or ValuePath must be specified for a Label. If both is specified, ValuePath is ignored. Note that if a valuePath doesn't exist for a label key, the label will be ignored.\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key defines the label key\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value defines the hard coded label value. Example: labels: - key: unit value: byte - key: environment value: production\",\n \"type\": \"string\"\n },\n \"valuePath\": {\n \"description\": \"ValuePath defines the label value path. Example: To add deployment's resource version as labels, labels: - key: version valuePath: .metadata.resourceVersion\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"metricValue\": {\n \"description\": \"MetricValue defines the configuration to obtain metric value. \\n Metrics must contain either States or MetricValue. If both are specified, MetricValue will be ignored.\",\n \"properties\": {\n \"value\": {\n \"description\": \"Value contains the metric value. It is always equal to 1. It is defined when some information of the object is collected as labels but there is no specific metric value. \\n Example: For metrics \\\"kube_pod_info\\\", there are some information like host_ip, pod_ip, node name is collected as labels. As there must be a metric value, metric value is kept as 1. The metric will look like `kube_pod_info{host_ip=\\\"172.18.0.2\\\", pod_ip=\\\"10.244.0.14\\\", node=\\\"kind-control-plane\\\" .....} 1`\",\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"valueFromExpression\": {\n \"description\": \"ValueFromExpression contains an expression for the metric value expression can be a function as well. Parameters is used in the expression string \\n Available expression evaluation functions are: \\n toInt() returns 1 if the expression is true otherwise 0, example: toInt(phase == 'Running') \\n evaluatePercentage(a, b) returns the value of (a * b%) example: evaluatePercentage(replicas, maxUnavailable) \\n calculateCPU() returns the cpu in unit core example: calculateCPU(cpu), for cpu value 150m, it will return 0.15 \\n calculateMemory() returns the memory size in byte example: calculateMemory(memory), for memory value 1 ki, it will return 1024 \\n toUnix() returns the DateTime string into unix format. example: toUnix(dateTime) will return the corresponding unix value for the given dateTime \\n in above examples phase, replicas, maxUnavailable, cpu, memory, dateTime are Parameter's key those values will come from corresponding Parameter's value\",\n \"type\": \"string\"\n },\n \"valueFromPath\": {\n \"description\": \"ValueFromPath contains the field path of the manifest file of a object. ValueFromPath is used when the metric value is coming from any specific json path of the object. \\n Example: For metrics \\\"kube_deployment_spec_replicas\\\", the metricValue is coming from a specific path .spec.replicas In this case, valueFromPath: .spec.replicas Some example of json path: .metadata.observedGeneration, .spec.restartPolicy, .status.startTime \\n Some example of json path which is coming from an element of an array: .spec.containers[*].image, .status.containerStatuses[*].restartCount\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name defines the metrics name. Name should be in snake case. Example: kube_deployment_spec_replicas\",\n \"type\": \"string\"\n },\n \"params\": {\n \"description\": \"Params is list of parameters configuration used in expression evaluation\",\n \"items\": {\n \"description\": \"Parameter contains the information of a parameter used in expression evaluation Parameter should contain an user defined key and corresponding Value or ValuePath. Either Value or ValuePath must be specified. If both are specified, ValuePath is ignored.\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key defines the parameter's key\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value defines user defined parameter's value.\",\n \"type\": \"string\"\n },\n \"valuePath\": {\n \"description\": \"ValuePath defines the manifest field path for the parameter's value. Example: To add deployment's spec replica count as parameter, params: - key: replica valuePath: .spec.replicas\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"states\": {\n \"description\": \"States handle metrics with label cardinality. States specify the possible states for a label and their corresponding MetricValue configuration. \\n Metrics must contain either States or MetricValue. If both are specified, MetricValue will be ignored.\",\n \"properties\": {\n \"labelKey\": {\n \"description\": \"LabelKey defines an user defined label key of the label which label cardinality is greater than one. Example: For metric \\\"kube_pod_status_phase\\\", the LabelKey can be \\\"phase\\\"\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"Values contains the list of state values. The size of the list is always equal to the cardinality of that label. Example: \\\"kube_pod_statue_phase\\\" metric has a label \\\"phase\\\" which cardinality is equal to 5. So Values should have StateValues config for all of them.\",\n \"items\": {\n \"description\": \"StateValues contains the information of a state value. StateValues is used to define state with all possible label values and corresponding MetricValue.\",\n \"properties\": {\n \"labelValue\": {\n \"description\": \"LabelValue defines the value of the label. Example: For labelKey \\\"phase\\\" (metric: kube_pod_status_phase path: .status.phase ) label value can be \\\"Running\\\", \\\"Succeeded\\\", \\\"Failed\\\", \\\"Unknown\\\" and \\\"Pending\\\"\",\n \"type\": \"string\"\n },\n \"metricValue\": {\n \"description\": \"MetricValue defines the configuration of the metric value for the corresponding LabelValue\",\n \"properties\": {\n \"value\": {\n \"description\": \"Value contains the metric value. It is always equal to 1. It is defined when some information of the object is collected as labels but there is no specific metric value. \\n Example: For metrics \\\"kube_pod_info\\\", there are some information like host_ip, pod_ip, node name is collected as labels. As there must be a metric value, metric value is kept as 1. The metric will look like `kube_pod_info{host_ip=\\\"172.18.0.2\\\", pod_ip=\\\"10.244.0.14\\\", node=\\\"kind-control-plane\\\" .....} 1`\",\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"valueFromExpression\": {\n \"description\": \"ValueFromExpression contains an expression for the metric value expression can be a function as well. Parameters is used in the expression string \\n Available expression evaluation functions are: \\n toInt() returns 1 if the expression is true otherwise 0, example: toInt(phase == 'Running') \\n evaluatePercentage(a, b) returns the value of (a * b%) example: evaluatePercentage(replicas, maxUnavailable) \\n calculateCPU() returns the cpu in unit core example: calculateCPU(cpu), for cpu value 150m, it will return 0.15 \\n calculateMemory() returns the memory size in byte example: calculateMemory(memory), for memory value 1 ki, it will return 1024 \\n toUnix() returns the DateTime string into unix format. example: toUnix(dateTime) will return the corresponding unix value for the given dateTime \\n in above examples phase, replicas, maxUnavailable, cpu, memory, dateTime are Parameter's key those values will come from corresponding Parameter's value\",\n \"type\": \"string\"\n },\n \"valueFromPath\": {\n \"description\": \"ValueFromPath contains the field path of the manifest file of a object. ValueFromPath is used when the metric value is coming from any specific json path of the object. \\n Example: For metrics \\\"kube_deployment_spec_replicas\\\", the metricValue is coming from a specific path .spec.replicas In this case, valueFromPath: .spec.replicas Some example of json path: .metadata.observedGeneration, .spec.restartPolicy, .status.startTime \\n Some example of json path which is coming from an element of an array: .spec.containers[*].image, .status.containerStatuses[*].restartCount\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"labelValue\",\n \"metricValue\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"labelKey\",\n \"values\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Type defines the metrics type. For kubernetes based object, types can only be \\\"gauge\\\"\",\n \"enum\": [\n \"gauge\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"help\",\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"targetRef\": {\n \"description\": \"TargetRef defines the object for which metrics will be collected\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"APIVersion defines the versioned schema of this representation of an object.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is a string value representing the REST resource this object represents. In CamelCase.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"apiVersion\",\n \"kind\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"metrics\",\n \"targetRef\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Metrics Configuration\",\n \"type\": \"object\"\n}", + "version": "metrics.appscode.com/v1alpha1" + }, + "configuration": null, + "description": "", + "displayName": "Metrics Configuration", + "format": "JSON", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "genealogy": "", + "isAnnotation": false, + "isNamespaced": false, + "published": false, + "source_uri": "https://charts.appscode.com/stable/voyager-crds/voyager-crds-v2024.8.30.tgz" + }, + "model": { + "category": { + "name": "Uncategorized" + }, + "displayName": "Voyager Crds", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "source_uri": "https://charts.appscode.com/stable/voyager-crds/voyager-crds-v2024.8.30.tgz", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "2024.8.30" + }, + "name": "voyager-crds", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Uncategorized", + "version": "v1.0.0", + "components": null, + "relationships": null + }, + "schemaVersion": "components.meshery.io/v1beta1", + "status": "ignored", + "styles": { + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "svgColor": "", + "svgWhite": "" + }, + "version": "v1.0.0" + } \ No newline at end of file diff --git a/server/meshmodel/voyager-crds/2024.8.30/v1.0.0/model.json b/server/meshmodel/voyager-crds/2024.8.30/v1.0.0/model.json new file mode 100644 index 00000000000..24ba5afdcca --- /dev/null +++ b/server/meshmodel/voyager-crds/2024.8.30/v1.0.0/model.json @@ -0,0 +1,42 @@ +{ + "category": { + "name": "Uncategorized" + }, + "displayName": "Voyager Crds", + "id": "00000000-0000-0000-0000-000000000000", + "metadata": { + "capabilities": null, + "isAnnotation": false, + "primaryColor": "#00B39F", + "secondaryColor": "#00D3A9", + "shape": "circle", + "styleOverrides": "", + "svgColor": "", + "svgComplete": "", + "svgWhite": "" + }, + "model": { + "version": "2024.8.30" + }, + "name": "voyager-crds", + "registrant": { + "created_at": "0001-01-01T00:00:00Z", + "credential_id": "00000000-0000-0000-0000-000000000000", + "deleted_at": "0001-01-01T00:00:00Z", + "id": "00000000-0000-0000-0000-000000000000", + "kind": "artifacthub", + "name": "Artifact Hub", + "status": "discovered", + "sub_type": "", + "type": "registry", + "updated_at": "0001-01-01T00:00:00Z", + "user_id": "00000000-0000-0000-0000-000000000000" + }, + "connection_id": "00000000-0000-0000-0000-000000000000", + "schemaVersion": "models.meshery.io/v1beta1", + "status": "ignored", + "subCategory": "Uncategorized", + "version": "v1.0.0", + "components": null, + "relationships": null + } \ No newline at end of file